@@ -46,42 +46,95 @@ if(NOT OpenCV_FOUND)
4646 -DCMAKE_CXX_STANDARD=17
4747 )
4848
49+ if (WIN32 )
50+ set (_opencv_ver_header "${CMAKE_SOURCE_DIR } /3rdparty/opencv/modules/core/include/opencv2/core/version.hpp" )
51+ if (EXISTS "${_opencv_ver_header} " )
52+ file (READ "${_opencv_ver_header} " _opencv_ver_text )
53+ string (REGEX REPLACE ".*#define CV_VERSION_MAJOR[ \t ]+([0-9]+).*" "\\ 1" _opencv_ver_major "${_opencv_ver_text} " )
54+ string (REGEX REPLACE ".*#define CV_VERSION_MINOR[ \t ]+([0-9]+).*" "\\ 1" _opencv_ver_minor "${_opencv_ver_text} " )
55+ string (REGEX REPLACE ".*#define CV_VERSION_REVISION[ \t ]+([0-9]+).*" "\\ 1" _opencv_ver_patch "${_opencv_ver_text} " )
56+ set (_opencv_dllversion "${_opencv_ver_major}${_opencv_ver_minor}${_opencv_ver_patch} " )
57+ else ()
58+ set (_opencv_dllversion "" )
59+ endif ()
60+
61+ if (MSVC_VERSION GREATER_EQUAL 1930)
62+ set (_opencv_vc "vc17" )
63+ elseif (MSVC_VERSION GREATER_EQUAL 1920)
64+ set (_opencv_vc "vc16" )
65+ else ()
66+ set (_opencv_vc "vc15" )
67+ endif ()
68+ set (_opencv_arch "x64" )
69+ set (_opencv_libdir "${OPENCV_INSTALL_DIR} /${_opencv_arch} /${_opencv_vc} /lib" )
70+ set (_opencv_bindir "${OPENCV_INSTALL_DIR} /${_opencv_arch} /${_opencv_vc} /bin" )
71+
72+ set (_opencv_world_lib "${_opencv_libdir} /opencv_world${_opencv_dllversion} .lib" )
73+ set (_opencv_world_dll "${_opencv_bindir} /opencv_world${_opencv_dllversion} .dll" )
74+ set (_opencv_include_dir "${OPENCV_INSTALL_DIR} /include" )
75+
76+ set (_opencv_byproducts
77+ "${_opencv_world_lib} "
78+ "${_opencv_world_dll} "
79+ )
80+ else ()
81+ set (_opencv_world "${OPENCV_INSTALL_DIR} /lib/libopencv_world${CMAKE_SHARED_LIBRARY_SUFFIX } " )
82+ set (_opencv_include_dir "${OPENCV_INSTALL_DIR} /include/opencv4" )
83+
84+ set (_opencv_byproducts
85+ "${_opencv_world} "
86+ )
87+ endif ()
88+
4989 ExternalProject_Add (opencv_external
5090 SOURCE_DIR "${CMAKE_SOURCE_DIR } /3rdparty/opencv"
5191 BINARY_DIR "${OPENCV_BUILD_DIR} "
5292 INSTALL_DIR "${OPENCV_INSTALL_DIR} "
5393 CMAKE_ARGS
5494 -DCMAKE_INSTALL_PREFIX=${OPENCV_INSTALL_DIR}
5595 -DCMAKE_BUILD_TYPE=Release
96+ -DOPENCV_INSTALL_BIN_DIR=bin
97+ -DOPENCV_INSTALL_LIB_DIR=lib
98+ -DOPENCV_INSTALL_INCLUDE_DIR=include
5699 -DBUILD_SHARED_LIBS=ON
57100 -DBUILD_PROTOBUF=ON
58101 -DPROTOBUF_UPDATE_FILES=OFF
59102 ${OPENCV_FEATURE_ARGS}
60103 CMAKE_CACHE_ARGS
61104 -DBUILD_LIST:STRING=${OPENCV_COMPONENTS_ESC}
62105 BUILD_BYPRODUCTS
63- ${OPENCV_INSTALL_DIR} /lib/libopencv_world ${ CMAKE_SHARED_LIBRARY_SUFFIX }
106+ ${_opencv_byproducts }
64107 )
65108 add_dependencies (itlabai_external opencv_external )
66109
67- if (MSVC )
68- set (_opencv_world "${OPENCV_INSTALL_DIR} /lib/opencv_world.lib" )
69- else ()
70- set (_opencv_world "${OPENCV_INSTALL_DIR} /lib/libopencv_world${CMAKE_SHARED_LIBRARY_SUFFIX } " )
71- endif ()
72-
73- file (MAKE_DIRECTORY "${OPENCV_INSTALL_DIR} /include/opencv4" )
110+ file (MAKE_DIRECTORY "${_opencv_include_dir} " )
74111 file (MAKE_DIRECTORY "${OPENCV_INSTALL_DIR} /lib" )
75112
76113 add_library (OpenCV::opencv_world SHARED IMPORTED GLOBAL )
77- set_target_properties (OpenCV::opencv_world PROPERTIES
78- IMPORTED_LOCATION "${_opencv_world} "
79- IMPORTED_LOCATION_RELEASE "${_opencv_world} "
80- IMPORTED_LOCATION_DEBUG "${_opencv_world} "
81- IMPORTED_LOCATION_RELWITHDEBINFO "${_opencv_world} "
82- IMPORTED_LOCATION_MINSIZEREL "${_opencv_world} "
83- INTERFACE_INCLUDE_DIRECTORIES "${OPENCV_INSTALL_DIR} /include/opencv4"
84- )
114+ if (WIN32 )
115+ set_target_properties (OpenCV::opencv_world PROPERTIES
116+ IMPORTED_LOCATION "${_opencv_world_dll} "
117+ IMPORTED_LOCATION_RELEASE "${_opencv_world_dll} "
118+ IMPORTED_LOCATION_DEBUG "${_opencv_world_dll} "
119+ IMPORTED_LOCATION_RELWITHDEBINFO "${_opencv_world_dll} "
120+ IMPORTED_LOCATION_MINSIZEREL "${_opencv_world_dll} "
121+ IMPORTED_IMPLIB "${_opencv_world_lib} "
122+ IMPORTED_IMPLIB_RELEASE "${_opencv_world_lib} "
123+ IMPORTED_IMPLIB_DEBUG "${_opencv_world_lib} "
124+ IMPORTED_IMPLIB_RELWITHDEBINFO "${_opencv_world_lib} "
125+ IMPORTED_IMPLIB_MINSIZEREL "${_opencv_world_lib} "
126+ INTERFACE_INCLUDE_DIRECTORIES "${_opencv_include_dir} "
127+ )
128+ else ()
129+ set_target_properties (OpenCV::opencv_world PROPERTIES
130+ IMPORTED_LOCATION "${_opencv_world} "
131+ IMPORTED_LOCATION_RELEASE "${_opencv_world} "
132+ IMPORTED_LOCATION_DEBUG "${_opencv_world} "
133+ IMPORTED_LOCATION_RELWITHDEBINFO "${_opencv_world} "
134+ IMPORTED_LOCATION_MINSIZEREL "${_opencv_world} "
135+ INTERFACE_INCLUDE_DIRECTORIES "${_opencv_include_dir} "
136+ )
137+ endif ()
85138else ()
86139 # System OpenCV: ensure a world-like target exists
87140 if (NOT TARGET OpenCV::opencv_world)
0 commit comments