1+ cmake_minimum_required (VERSION 3.8 )
2+ project (main)
3+ MESSAGE ( STATUS "PROJECT_NAME: " ${PROJECT_NAME} )
4+ find_package (OpenCV REQUIRED )
5+
6+ if (CMAKE_HOST_WIN32 )
7+ set (WINDOWS 1)
8+ elseif (CMAKE_HOST_APPLE )
9+ set (mac 1)
10+ elseif (CMAKE_HOST_UNIX )
11+ set (LINUX 1)
12+ endif ()
13+
14+ # Check compiler architecture
15+ if (CMAKE_CL_64 )
16+ MESSAGE ( STATUS ">>>>>>>> 64-bit" )
17+ else ()
18+ MESSAGE ( STATUS ">>>>>>>> 32-bit" )
19+ endif ()
20+
21+ # Check compilers
22+ MESSAGE ( STATUS ">>>>>>>> ${CMAKE_CXX_COMPILER_ID} " )
23+ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )
24+ MESSAGE ( STATUS "Using Clang" )
25+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
26+ MESSAGE ( STATUS "Using GNU" )
27+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" )
28+ MESSAGE ( STATUS "Using Intel" )
29+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
30+ MESSAGE ( STATUS "Using MSVC" )
31+ endif ()
32+
33+ # Set RPATH
34+ if (CMAKE_HOST_UNIX )
35+ if (CMAKE_HOST_APPLE )
36+ SET (CMAKE_CXX_FLAGS "-std=c++11 -O3 -Wl,-rpath,@loader_path" )
37+ SET (CMAKE_INSTALL_RPATH "@loader_path" )
38+ else ()
39+ SET (CMAKE_CXX_FLAGS "-std=c++11 -O3 -Wl,-rpath=$ORIGIN" )
40+ SET (CMAKE_INSTALL_RPATH "$ORIGIN" )
41+ endif ()
42+ SET (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE )
43+ endif ()
44+
45+ # Add search path for include and lib files
46+ MESSAGE ( STATUS "CPU architecture ${CMAKE_SYSTEM_PROCESSOR} " )
47+ if (WINDOWS)
48+ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
49+ link_directories ("${PROJECT_SOURCE_DIR} /../../dcv/lib/win" )
50+ else ()
51+ link_directories ("${PROJECT_SOURCE_DIR} /../../dcv/lib/win" )
52+ endif ()
53+ elseif (LINUX )
54+ if (CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
55+ MESSAGE ( STATUS "Link directory: ${PROJECT_SOURCE_DIR} /../../dcv/lib/linux/x64" )
56+ link_directories ("${PROJECT_SOURCE_DIR} /../../dcv/lib/linux/x64" )
57+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
58+ MESSAGE ( STATUS "Link directory: ${PROJECT_SOURCE_DIR} /../../dcv/lib/linux/arm64/" )
59+ link_directories ("${PROJECT_SOURCE_DIR} /../../dcv/lib/linux/arm64/" )
60+ endif ()
61+ elseif (mac)
62+ MESSAGE ( STATUS "Link directory: ${PROJECT_SOURCE_DIR} /../../dcv/lib/mac/" )
63+ link_directories ("${PROJECT_SOURCE_DIR} /../../dcv/lib/mac/" )
64+ endif ()
65+ include_directories ("${PROJECT_BINARY_DIR} " "${PROJECT_SOURCE_DIR} /../../dcv/include/" )
66+
67+ # Add the executable
68+ add_executable (${PROJECT_NAME} main.cxx )
69+ if (WINDOWS)
70+ if (CMAKE_CL_64 )
71+ target_link_libraries (${PROJECT_NAME} "DynamsoftCorex64" "DynamsoftLicensex64" "DynamsoftCaptureVisionRouterx64" "DynamsoftUtilityx64" ${OpenCV_LIBS} )
72+ endif ()
73+ else ()
74+ target_link_libraries (${PROJECT_NAME} "DynamsoftCore" "DynamsoftLicense" "DynamsoftCaptureVisionRouter" "DynamsoftUtility" pthread ${OpenCV_LIBS} )
75+ endif ()
76+
77+ if (WINDOWS)
78+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
79+ COMMAND ${CMAKE_COMMAND} -E copy_directory
80+ "${PROJECT_SOURCE_DIR} /../../dcv/lib/win"
81+ $<TARGET_FILE_DIR :main >)
82+ elseif (LINUX )
83+ if (CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
84+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
85+ COMMAND ${CMAKE_COMMAND} -E copy_directory
86+ "${PROJECT_SOURCE_DIR} /../../dcv/lib/linux/x64"
87+ $<TARGET_FILE_DIR :main >)
88+ elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)
89+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
90+ COMMAND ${CMAKE_COMMAND} -E copy_directory
91+ "${PROJECT_SOURCE_DIR} /../../dcv/lib/linux/arm64"
92+ $<TARGET_FILE_DIR :main >)
93+ endif ()
94+ elseif (mac)
95+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
96+ COMMAND ${CMAKE_COMMAND} -E copy_directory
97+ "${PROJECT_SOURCE_DIR} /../../dcv/lib/mac/"
98+ $<TARGET_FILE_DIR :main >)
99+ endif ()
100+
101+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
102+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR :main >/Templates
103+ COMMAND ${CMAKE_COMMAND} -E copy_directory
104+ "${PROJECT_SOURCE_DIR} /../../dcv/resource/Templates"
105+ $<TARGET_FILE_DIR :main >/Templates )
106+
107+ add_custom_command (TARGET ${PROJECT_NAME} POST_BUILD
108+ COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR :main >/Models
109+ COMMAND ${CMAKE_COMMAND} -E copy_directory
110+ "${PROJECT_SOURCE_DIR} /../../dcv/resource/Models"
111+ $<TARGET_FILE_DIR :main >/Models )
0 commit comments