11cmake_minimum_required (VERSION 3.15)
22
33project (opencv_dart_library VERSION 0.0.1 LANGUAGES C CXX)
4- set (library_name "opencv_dart" )
4+ set (LIBRARY_NAME "opencv_dart" )
55
6+ set (CMAKE_CXX_STANDARD 20)
7+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
68set (CMAKE_EXPORT_COMPILE_COMMANDS TRUE )
9+ cmake_policy (SET CMP0135 NEW)
710
811find_package (OpenCV REQUIRED)
912
1013set (OpenCV_LIBS
1114 opencv_aruco opencv_core opencv_calib3d opencv_dnn opencv_highgui
12- opencv_features2d opencv_photo opencv_imgproc opencv_img_hash
15+ opencv_features2d opencv_gapi opencv_photo opencv_imgproc
1316 opencv_objdetect opencv_video opencv_videoio opencv_stitching
17+ opencv_img_hash
1418)
1519
1620if (ANDROID)
@@ -31,36 +35,43 @@ message(STATUS " version: ${OpenCV_VERSION}")
3135message (STATUS " libraries: ${OpenCV_LIBS} " )
3236message (STATUS " include path: ${OpenCV_INCLUDE_DIRS} " )
3337
34- file (GLOB GOCV_FILES
35- "${CMAKE_CURRENT_SOURCE_DIR} /src/*.cpp"
36-
37- # "${CMAKE_CURRENT_SOURCE_DIR}/gocv/contrib/*.cpp"
38+ file (GLOB_RECURSE CPP_FILES
39+ "${CMAKE_CURRENT_SOURCE_DIR} /src/**/*.cpp"
40+
41+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/calib3d/*.cpp"
42+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/core/*.cpp"
43+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/dnn/*.cpp"
44+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/extra/*.cpp"
45+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/highgui/*.cpp"
46+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/imgcodecs/*.cpp"
47+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/imgproc/*.cpp"
48+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/objdetect/*.cpp"
49+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/photo/*.cpp"
50+ # "${CMAKE_CURRENT_SOURCE_DIR}/src/stitching/*.cpp"
3851)
39- file (GLOB GOCV_HEADERS
52+ file (GLOB_RECURSE HEADER_FILES
4053 "${CMAKE_CURRENT_SOURCE_DIR} /src/*.h"
41-
42- # "${CMAKE_CURRENT_SOURCE_DIR}/gocv/contrib/*.cpp"
4354)
4455
45- add_library (${library_name } SHARED
46- ${GOCV_FILES }
56+ add_library (${LIBRARY_NAME } SHARED
57+ ${CPP_FILES }
4758)
48- target_include_directories (${library_name } SYSTEM PUBLIC
59+ target_include_directories (${LIBRARY_NAME } SYSTEM PUBLIC
4960 "${CMAKE_CURRENT_SOURCE_DIR} /src"
5061 ${OpenCV_INCLUDE_DIRS}
5162)
52- target_link_libraries (${library_name } PRIVATE ${OpenCV_LIBS} )
63+ target_link_libraries (${LIBRARY_NAME } PRIVATE ${OpenCV_LIBS} )
5364
54- set_target_properties (${library_name } PROPERTIES
65+ set_target_properties (${LIBRARY_NAME } PROPERTIES
5566 # PUBLIC_HEADER ${GOCV_HEADERS}
56- OUTPUT_NAME ${library_name }
67+ OUTPUT_NAME ${LIBRARY_NAME }
5768 CXX_VISIBILITY_PRESET default
5869 C_VISIBILITY_PRESET default
5970 LINK_FLAGS_RELEASE -s
6071)
6172
6273if (IOS)
63- set_target_properties (${library_name } PROPERTIES
74+ set_target_properties (${LIBRARY_NAME } PROPERTIES
6475 FRAMEWORK TRUE
6576 FRAMEWORK_VERSION CXX
6677 MACOSX_FRAMEWORK_IDENTIFIER dev.rainyl.opencvDart
@@ -71,28 +82,16 @@ endif(IOS)
7182
7283
7384if (WIN32 )
74- set_target_properties (${library_name } PROPERTIES
85+ set_target_properties (${LIBRARY_NAME } PROPERTIES
7586 WINDOWS_EXPORT_ALL_SYMBOLS ON
87+ COMPILE_FLAGS "/EHsc"
7688 )
7789endif (WIN32 )
7890
79- target_compile_definitions (${library_name} PUBLIC DART_SHARED_LIB)
80-
81- if (WITH_OPENCV_DART_DEMO)
82- add_executable (
83- demo
84- "src/demo.cxx"
85- )
86- target_link_libraries (
87- demo
88- PUBLIC
89- ${OpenCV_LIBS}
90- ${library_name}
91- )
92- endif ()
91+ target_compile_definitions (${LIBRARY_NAME} PUBLIC DART_SHARED_LIB)
9392
94- # ## install
95- install (TARGETS ${library_name }
93+ ### install
94+ install (TARGETS ${LIBRARY_NAME }
9695 DESTINATION ${CMAKE_INSTALL_PREFIX} )
9796
9897if (WIN32 )
@@ -104,3 +103,68 @@ elseif(LINUX)
104103endif ()
105104
106105install (FILES ${CV_DEPENDENCIES} DESTINATION ${CMAKE_INSTALL_PREFIX} )
106+
107+ if (CVD_ENABLE_TEST)
108+ ### test
109+ include (FetchContent)
110+ FetchContent_Declare(
111+ googletest
112+ URL https://github.com/google/googletest/archive/refs/heads/main.zip
113+ )
114+ # For Windows: Prevent overriding the parent project's compiler/linker settings
115+ if (WIN32 )
116+ set (gtest_force_shared_crt ON CACHE BOOL "" FORCE)
117+ endif (WIN32 )
118+ FetchContent_MakeAvailable(googletest)
119+ # copy test images
120+ file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR} /test )
121+ file (COPY
122+ "${CMAKE_CURRENT_SOURCE_DIR} /test/images"
123+ DESTINATION ${CMAKE_BINARY_DIR} /test
124+ )
125+ # model files for DNN test
126+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR} /test/models" )
127+ file (COPY
128+ "${CMAKE_CURRENT_SOURCE_DIR} /test/models"
129+ DESTINATION ${CMAKE_BINARY_DIR} /test
130+ )
131+ endif ()
132+
133+ enable_testing ()
134+
135+ macro (add_ocv_dart_test executable_name source_file)
136+ add_executable (
137+ ${executable_name}
138+ "${source_file} "
139+ )
140+
141+ target_link_libraries (
142+ ${executable_name}
143+ PUBLIC
144+ ${OpenCV_LIBS}
145+ ${LIBRARY_NAME}
146+ GTest::gtest_main
147+ )
148+
149+ if (WIN32 )
150+ set_target_properties (${executable_name} PROPERTIES
151+ COMPILE_FLAGS "/EHsc"
152+ )
153+ endif (WIN32 )
154+ endmacro ()
155+
156+ add_ocv_dart_test(ocv_dart_test_vec "src/test/vec.cc" )
157+ add_ocv_dart_test(ocv_dart_test_core "src/test/core.cc" )
158+ add_ocv_dart_test(ocv_dart_test_calib3d "src/test/calib3d.cc" )
159+ add_ocv_dart_test(ocv_dart_test_dnn "src/test/dnn.cc" )
160+ add_ocv_dart_test(ocv_dart_test_imgcodecs "src/test/imgcodecs.cc" )
161+ add_ocv_dart_test(ocv_dart_test_imgproc "src/test/imgproc.cc" )
162+
163+ include (GoogleTest)
164+ gtest_discover_tests(ocv_dart_test_vec)
165+ gtest_discover_tests(ocv_dart_test_core)
166+ gtest_discover_tests(ocv_dart_test_calib3d)
167+ gtest_discover_tests(ocv_dart_test_dnn)
168+ gtest_discover_tests(ocv_dart_test_imgcodecs)
169+ gtest_discover_tests(ocv_dart_test_imgproc)
170+ endif ()
0 commit comments