Skip to content

Commit 13f55ec

Browse files
committed
test
1 parent 9c69b03 commit 13f55ec

File tree

6 files changed

+168
-42
lines changed

6 files changed

+168
-42
lines changed

3rdparty/CMakeLists.txt

Lines changed: 158 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,165 @@
11
add_subdirectory(googletest)
2+
add_subdirectory(Json)
23

3-
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build")
4+
set(TBB_TEST OFF CACHE BOOL "Disable TBB tests")
5+
set(TBB_OUTPUT_DIR_BASE tbb CACHE STRING "TBB output directory base")
46

5-
add_custom_target(build_tbb ALL
6-
COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/3rdparty/TBB" -B "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build"
7-
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
8-
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
9-
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
10-
-DTBB_TEST=OFF
11-
-DCMAKE_CXX_FLAGS="-w"
12-
-DCMAKE_C_FLAGS="-w"
13-
-DTBB_OUTPUT_DIR_BASE=tbb
14-
COMMAND ${CMAKE_COMMAND} --build "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build" --config "${CMAKE_BUILD_TYPE}"
15-
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/TBB/build"
16-
)
17-
18-
add_custom_target(build_opencv ALL
19-
COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/3rdparty/opencv" -B "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build"
20-
-DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER}
21-
-DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER}
7+
if(NOT WIN32)
8+
set(CMAKE_CXX_FLAGS_TBB_BACKUP "${CMAKE_CXX_FLAGS}")
9+
set(CMAKE_C_FLAGS_TBB_BACKUP "${CMAKE_C_FLAGS}")
10+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
11+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w")
12+
endif()
13+
14+
add_subdirectory(TBB)
15+
16+
if(NOT WIN32)
17+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS_TBB_BACKUP}")
18+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_TBB_BACKUP}")
19+
endif()
20+
21+
include(ExternalProject)
22+
23+
function(setup_opencv_external_project)
24+
message(STATUS "Building OpenCV from bundled source")
25+
26+
set(OPENCV_BINARY_DIR "${CMAKE_BINARY_DIR}/opencv_build")
27+
set(OPENCV_INSTALL_DIR "${CMAKE_BINARY_DIR}/opencv_install")
28+
29+
file(MAKE_DIRECTORY "${OPENCV_BINARY_DIR}")
30+
31+
set(OPENCV_CMAKE_ARGS
2232
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
2333
-DBUILD_PERF_TESTS=OFF
2434
-DBUILD_TESTS=OFF
2535
-DBUILD_opencv_apps=OFF
26-
COMMAND ${CMAKE_COMMAND} --build "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build" --config "${CMAKE_BUILD_TYPE}"
27-
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build"
28-
)
36+
-DBUILD_SHARED_LIBS=OFF
37+
-DCMAKE_INSTALL_PREFIX=${OPENCV_INSTALL_DIR}
38+
-DCMAKE_CXX_FLAGS=-w
39+
-DCMAKE_C_FLAGS=-w
40+
-DBUILD_opencv_core=ON
41+
-DBUILD_opencv_imgproc=ON
42+
-DBUILD_opencv_imgcodecs=ON
43+
-DBUILD_opencv_highgui=ON
44+
# Disable problematic modules
45+
-DBUILD_opencv_video=OFF
46+
-DBUILD_opencv_videoio=OFF
47+
-DBUILD_opencv_ml=OFF
48+
-DBUILD_opencv_features2d=OFF
49+
-DBUILD_opencv_calib3d=OFF
50+
-DBUILD_opencv_objdetect=OFF
51+
-DBUILD_opencv_dnn=OFF
52+
-DBUILD_opencv_photo=OFF
53+
-DBUILD_opencv_stitching=OFF
54+
-DBUILD_opencv_gapi=OFF
55+
-DBUILD_opencv_python3=OFF
56+
-DBUILD_opencv_python_bindings_generator=OFF
57+
# Disable 3rdparty libraries that cause issues
58+
-DBUILD_ZLIB=OFF
59+
-DBUILD_PNG=OFF
60+
-DBUILD_JPEG=OFF
61+
-DBUILD_TIFF=OFF
62+
-DBUILD_WEBP=OFF
63+
-DBUILD_OPENEXR=OFF
64+
-DWITH_PNG=OFF
65+
-DWITH_JPEG=OFF
66+
-DWITH_TIFF=OFF
67+
-DWITH_WEBP=OFF
68+
-DWITH_OPENEXR=OFF
69+
-DWITH_JASPER=OFF
70+
-DWITH_OPENJPEG=OFF
71+
-DBUILD_JASPER=OFF
72+
-DBUILD_OPENJPEG=OFF
73+
# Disable other problematic features
74+
-DWITH_OPENCL=OFF
75+
-DWITH_CUDA=OFF
76+
-DWITH_OPENGL=OFF
77+
-DWITH_QT=OFF
78+
-DWITH_GTK=OFF
79+
-DWITH_1394=OFF
80+
-DWITH_FFMPEG=OFF
81+
-DWITH_GSTREAMER=OFF
82+
-DWITH_V4L=OFF
83+
-DWITH_DSHOW=OFF
84+
-DWITH_EIGEN=OFF
85+
-DWITH_LAPACK=OFF
86+
-DBUILD_EXAMPLES=OFF
87+
-DBUILD_DOCS=OFF
88+
-DBUILD_PACKAGE=OFF
89+
# Use system libraries where possible
90+
-DOPENCV_FORCE_3RDPARTY_BUILD=OFF
91+
# macOS specific fixes
92+
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
93+
-DCMAKE_CXX_STANDARD=17
94+
-DWITH_IPP=OFF
95+
-DWITH_ITT=OFF
96+
# Disable iOS/mobile features
97+
-DWITH_OPENVX=OFF
98+
-DBUILD_ANDROID_PROJECTS=OFF
99+
-DBUILD_ANDROID_EXAMPLES=OFF
100+
# Disable ARM optimizations that cause linker issues
101+
-DWITH_CAROTENE=OFF
102+
-DCPU_BASELINE=""
103+
-DCPU_DISPATCH=""
104+
)
105+
106+
if(CMAKE_C_COMPILER_LAUNCHER)
107+
list(APPEND OPENCV_CMAKE_ARGS -DCMAKE_C_COMPILER_LAUNCHER=${CMAKE_C_COMPILER_LAUNCHER})
108+
endif()
109+
110+
if(CMAKE_CXX_COMPILER_LAUNCHER)
111+
list(APPEND OPENCV_CMAKE_ARGS -DCMAKE_CXX_COMPILER_LAUNCHER=${CMAKE_CXX_COMPILER_LAUNCHER})
112+
endif()
113+
114+
# Add generator if present
115+
set(OPENCV_GENERATOR_ARGS "")
116+
if(CMAKE_GENERATOR)
117+
set(OPENCV_GENERATOR_ARGS -G ${CMAKE_GENERATOR})
118+
endif()
119+
120+
ExternalProject_Add(
121+
opencv_external
122+
SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rdparty/opencv"
123+
BINARY_DIR "${OPENCV_BINARY_DIR}"
124+
CMAKE_ARGS ${OPENCV_CMAKE_ARGS}
125+
BUILD_ALWAYS OFF
126+
CONFIGURE_COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/3rdparty/opencv" -B "${OPENCV_BINARY_DIR}" ${OPENCV_GENERATOR_ARGS} ${OPENCV_CMAKE_ARGS}
127+
BUILD_COMMAND ${CMAKE_COMMAND} --build "${OPENCV_BINARY_DIR}" --config ${CMAKE_BUILD_TYPE}
128+
INSTALL_COMMAND ${CMAKE_COMMAND} --build "${OPENCV_BINARY_DIR}" --target install
129+
)
130+
131+
add_library(opencv_interface INTERFACE)
132+
add_dependencies(opencv_interface opencv_external)
133+
134+
target_include_directories(opencv_interface INTERFACE
135+
${OPENCV_INSTALL_DIR}/include/opencv4
136+
${OPENCV_INSTALL_DIR}/include
137+
)
138+
139+
target_link_directories(opencv_interface INTERFACE
140+
${OPENCV_INSTALL_DIR}/lib
141+
)
142+
143+
target_link_libraries(opencv_interface INTERFACE
144+
opencv_core
145+
opencv_imgproc
146+
opencv_imgcodecs
147+
opencv_highgui
148+
)
149+
150+
# Add macOS frameworks for highgui
151+
if(APPLE)
152+
target_link_libraries(opencv_interface INTERFACE
153+
"-framework Cocoa"
154+
"-framework AppKit"
155+
"-framework Foundation"
156+
"-framework CoreGraphics"
157+
"-framework CoreImage"
158+
"-framework ImageIO"
159+
"-framework OpenGL"
160+
)
161+
endif()
162+
163+
endfunction()
164+
165+
setup_opencv_external_project()

app/Accuracy/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@ add_library(ACCLib STATIC ${INCLUDE_HEADERS} ${SRC_FILES})
44

55
set_target_properties(ReadLib PROPERTIES LINKER_LANGUAGE CXX)
66

7-
find_package( OpenCV REQUIRED PATHS "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build" )
8-
include_directories( ${OpenCV_INCLUDE_DIRS} )
9-
target_link_libraries( ACCLib ${OpenCV_LIBS} )
10-
target_link_libraries( ACCLib tbb)
7+
target_link_libraries( ACCLib opencv_interface )
8+
target_link_libraries( ACCLib TBB::tbb)
119
target_link_libraries( ACCLib layers_lib)
1210
target_link_libraries( ACCLib gtest_main)
1311

app/AccuracyImgNet/CMakeLists.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
add_executable(ACCImgNet accimgnet.cpp)
22

3-
find_package( OpenCV REQUIRED PATHS "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build" )
4-
include_directories( ${OpenCV_INCLUDE_DIRS} )
5-
target_link_libraries( ACCImgNet ${OpenCV_LIBS} )
3+
target_link_libraries( ACCImgNet opencv_interface )
64
target_link_libraries( ACCImgNet tbb)
75
target_link_libraries( ACCImgNet layers_lib)
86
target_link_libraries( ACCImgNet gtest_main)

app/Graph/CMakeLists.txt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
1-
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build")
2-
31
set(INCLUDE_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/build.hpp")
42
set(SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/build.cpp")
53
add_library(BuildGraph STATIC ${INCLUDE_HEADERS} ${SRC_FILES})
64

75
set_target_properties(BuildGraph PROPERTIES LINKER_LANGUAGE CXX)
86

9-
find_package(OpenCV REQUIRED PATHS "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build")
10-
include_directories(${OpenCV_INCLUDE_DIRS})
11-
12-
target_link_libraries(BuildGraph PUBLIC ${OpenCV_LIBS})
7+
target_link_libraries(BuildGraph PUBLIC opencv_interface)
138
target_link_libraries(BuildGraph PUBLIC reader_lib)
14-
target_link_libraries(BuildGraph PUBLIC tbb)
9+
target_link_libraries(BuildGraph PUBLIC TBB::tbb)
1510
target_link_libraries(BuildGraph PUBLIC layers_lib)
1611
target_link_libraries(BuildGraph PUBLIC gtest_main)
1712

app/ReaderImage/CMakeLists.txt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build")
2-
31
set(INCLUDE_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/reader_img.hpp")
42
set(SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/reader_img_s.cpp")
53
add_library(ReadLib STATIC ${INCLUDE_HEADERS} ${SRC_FILES})
64

7-
85
set_target_properties(ReadLib PROPERTIES LINKER_LANGUAGE CXX)
96

10-
find_package( OpenCV REQUIRED PATHS "${CMAKE_SOURCE_DIR}/3rdparty/opencv/build" )
11-
include_directories( ${OpenCV_INCLUDE_DIRS} )
12-
target_link_libraries( ReadLib ${OpenCV_LIBS} )
13-
target_link_libraries( ReadLib tbb)
7+
target_link_libraries( ReadLib opencv_interface )
8+
target_link_libraries( ReadLib TBB::tbb)
149

1510
add_executable(Reader reader_img.cpp)
1611
target_link_libraries(Reader ReadLib)

src/perf/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
file(GLOB_RECURSE perf_src *.cpp)
22
add_library(perf_lib STATIC "${PERF_HEADERS}" "${perf_src}")
3+
4+
find_package(OpenMP REQUIRED)
5+
target_link_libraries(perf_lib PUBLIC OpenMP::OpenMP_CXX)

0 commit comments

Comments
 (0)