Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/samples/CMakeLists.txt
16334 views
1
# Utility function: adds sample executable target with name "example_<group>_<file_name>"
2
# Usage:
3
# ocv_define_sample(<output target> <relative filename> <group>)
4
function(ocv_define_sample out_target source sub)
5
get_filename_component(name "${source}" NAME_WE)
6
set(the_target "example_${sub}_${name}")
7
add_executable(${the_target} "${source}")
8
set_target_properties(${the_target} PROPERTIES PROJECT_LABEL "(sample) ${name}")
9
if(ENABLE_SOLUTION_FOLDERS)
10
set_target_properties(${the_target} PROPERTIES FOLDER "samples/${sub}")
11
endif()
12
if(WIN32 AND MSVC AND NOT BUILD_SHARED_LIBS)
13
set_target_properties(${the_target} PROPERTIES LINK_FLAGS "/NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:atlsd.lib /DEBUG")
14
endif()
15
if(WIN32)
16
install(TARGETS ${the_target} RUNTIME DESTINATION "samples/${sub}" COMPONENT samples)
17
endif()
18
# Add single target to build all samples in the group: 'make opencv_samples_cpp'
19
set(parent_target opencv_samples_${sub})
20
if(NOT TARGET ${parent_target})
21
add_custom_target(${parent_target})
22
if(TARGET opencv_samples)
23
add_dependencies(opencv_samples ${parent_target})
24
endif()
25
endif()
26
add_dependencies(${parent_target} ${the_target})
27
set(${out_target} ${the_target} PARENT_SCOPE)
28
endfunction()
29
30
if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_LIST_DIR)
31
#===================================================================================================
32
#
33
# Build as part of OpenCV
34
#
35
#===================================================================================================
36
37
function(ocv_install_example_src relpath)
38
if(INSTALL_C_EXAMPLES)
39
file(GLOB files ${ARGN})
40
install(FILES ${files}
41
DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}/${relpath}"
42
COMPONENT samples)
43
endif()
44
endfunction()
45
46
add_subdirectory(cpp)
47
add_subdirectory(java/tutorial_code)
48
add_subdirectory(dnn)
49
add_subdirectory(gpu)
50
add_subdirectory(tapi)
51
add_subdirectory(opencl)
52
if(WIN32 AND HAVE_DIRECTX)
53
add_subdirectory(directx)
54
endif()
55
if((NOT ANDROID) AND HAVE_OPENGL)
56
add_subdirectory(opengl)
57
endif()
58
if(HAVE_OPENVX)
59
add_subdirectory(openvx)
60
endif()
61
if(UNIX AND NOT ANDROID AND (HAVE_VA OR HAVE_VA_INTEL))
62
add_subdirectory(va_intel)
63
endif()
64
if(ANDROID AND BUILD_ANDROID_EXAMPLES)
65
add_subdirectory(android)
66
endif()
67
if(INSTALL_PYTHON_EXAMPLES)
68
add_subdirectory(python)
69
endif()
70
71
ocv_install_example_src("." CMakeLists.txt)
72
if(INSTALL_C_EXAMPLES)
73
install(DIRECTORY data DESTINATION "${OPENCV_SAMPLES_SRC_INSTALL_PATH}" COMPONENT samples_data)
74
endif()
75
76
else()
77
#===================================================================================================
78
#
79
# Standalone mode
80
#
81
#===================================================================================================
82
cmake_minimum_required(VERSION 3.1)
83
84
# Enable C++11
85
set(CMAKE_CXX_STANDARD 11)
86
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
87
88
project(samples C CXX)
89
option(BUILD_EXAMPLES "Build samples" ON)
90
91
# Assuming following installation folder structure (default for UNIX):
92
# <install_root>/share/
93
# └── OpenCV/ <-- OPENCV_CONFIG_INSTALL_PATH
94
# ├── OpenCVConfig.cmake <-- file to be found by find_package
95
# ├── ...
96
# ├── samples/ <-- OPENCV_SAMPLES_SRC_INSTALL_PATH
97
# │   ├── CMakeLists.txt <-- this file
98
# │   ├── cpp/
99
find_package(OpenCV REQUIRED PATHS "..")
100
101
function(ocv_install_example_src)
102
# not used in this branch
103
endfunction()
104
105
if(MSVC)
106
if(NOT ENABLE_BUILD_HARDENING)
107
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
108
endif()
109
110
if(NOT OpenCV_SHARED)
111
foreach(flag_var
112
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
113
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
114
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
115
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
116
if(${flag_var} MATCHES "/MD")
117
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
118
endif()
119
if(${flag_var} MATCHES "/MDd")
120
string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
121
endif()
122
endforeach(flag_var)
123
124
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib")
125
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib")
126
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd.lib")
127
endif()
128
endif()
129
130
add_definitions(-DDISABLE_OPENCV_24_COMPATIBILITY=1) # Avoid C-like legacy API
131
132
add_subdirectory(cpp)
133
if(WIN32)
134
add_subdirectory(directx)
135
endif()
136
add_subdirectory(dnn)
137
# add_subdirectory(gpu)
138
add_subdirectory(opencl)
139
# add_subdirectory(opengl)
140
# add_subdirectory(openvx)
141
add_subdirectory(tapi)
142
# add_subdirectory(va_intel)
143
144
endif()
145
146