Skip to content

Commit 161c464

Browse files
authored
Refactor OpenCV integration to use package managers (#661)
Removed custom FetchOpenCV.cmake and updated CMakeLists.txt to use OpenCV from vcpkg, pkg-config, or system package managers. Added opencv4 to vcpkg.json dependencies. This simplifies OpenCV management and improves cross-platform compatibility.
1 parent bce975e commit 161c464

File tree

3 files changed

+21
-94
lines changed

3 files changed

+21
-94
lines changed

CMakeLists.txt

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ option(USE_PKGCONFIG "Use pkg-config to find dependencies" OFF)
1212

1313
option(USE_SYSTEM_ONNXRUNTIME "Use system ONNX Runtime" OFF)
1414
option(DISABLE_ONNXRUNTIME_GPU "Disables GPU support of ONNX Runtime (Only valid on Linux)" OFF)
15-
set(USE_SYSTEM_OPENCV OFF CACHE STRING "Use system OpenCV")
1615

1716
include(compilerconfig)
1817
include(defaults)
@@ -49,6 +48,10 @@ if(NOT VCPKG_TARGET_TRIPLET STREQUAL "")
4948
list(PREPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/vcpkg_installed/${VCPKG_TARGET_TRIPLET}")
5049

5150
find_package(CURL CONFIG REQUIRED)
51+
find_package(OpenCV CONFIG REQUIRED)
52+
53+
add_library(OpenCV::opencv_core ALIAS opencv_core)
54+
add_library(OpenCV::opencv_imgproc ALIAS opencv_imgproc)
5255
elseif(USE_PKGCONFIG)
5356
# Use pkg-config to find dependencies (Arch Linux, etc.)
5457

@@ -63,12 +66,24 @@ elseif(USE_PKGCONFIG)
6366
target_include_directories(CURL::libcurl INTERFACE ${PC_CURL_INCLUDE_DIRS})
6467
target_compile_definitions(CURL::libcurl INTERFACE ${PC_CURL_CFLAGS_OTHER})
6568
target_link_directories(CURL::libcurl INTERFACE ${PC_CURL_LIBRARY_DIRS})
69+
70+
# OpenCV
71+
pkg_check_modules(PC_OPENCV REQUIRED opencv4)
72+
add_library(OpenCV::opencv_core INTERFACE IMPORTED)
73+
target_link_libraries(OpenCV::opencv_core INTERFACE opencv_core)
74+
target_include_directories(OpenCV::opencv_core INTERFACE ${PC_OPENCV_INCLUDE_DIRS})
75+
target_compile_definitions(OpenCV::opencv_core INTERFACE ${PC_OPENCV_CFLAGS_OTHER})
76+
target_link_directories(OpenCV::opencv_core INTERFACE ${PC_OPENCV_LIBRARY_DIRS})
77+
add_library(OpenCV::opencv_imgproc INTERFACE IMPORTED)
78+
target_link_libraries(OpenCV::opencv_imgproc INTERFACE opencv_imgproc)
79+
target_link_directories(OpenCV::opencv_imgproc INTERFACE ${PC_OPENCV_LIBRARY_DIRS})
6680
else()
6781
# Let system find dependencies (Fallback)
6882

6983
message(STATUS "Using system to find dependencies")
7084

7185
find_package(CURL REQUIRED)
86+
find_package(OpenCV CONFIG REQUIRED)
7287
endif()
7388

7489
if(DISABLE_ONNXRUNTIME_GPU)
@@ -94,21 +109,8 @@ else()
94109
include(cmake/FetchOnnxruntime.cmake)
95110
endif()
96111

97-
if(USE_SYSTEM_OPENCV)
98-
if(OS_LINUX)
99-
find_package(OpenCV REQUIRED COMPONENTS core imgproc)
100-
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE "${OpenCV_LIBRARIES}")
101-
target_include_directories(${CMAKE_PROJECT_NAME} SYSTEM PUBLIC "${OpenCV_INCLUDE_DIRS}")
102-
else()
103-
message(FATAL_ERROR "System OpenCV is only supported on Linux!")
104-
endif()
105-
else()
106-
include(cmake/FetchOpenCV.cmake)
107-
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE OpenCV)
108-
endif()
109-
110112
add_subdirectory(src/update-checker/CurlClient)
111-
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE CurlClient)
113+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE CurlClient OpenCV::opencv_core OpenCV::opencv_imgproc)
112114

113115
target_sources(
114116
${CMAKE_PROJECT_NAME}

cmake/FetchOpenCV.cmake

Lines changed: 0 additions & 79 deletions
This file was deleted.

vcpkg.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
"wolfssl"
1717
],
1818
"platform": "(uwp | !windows) & !mingw"
19+
},
20+
{
21+
"name": "opencv4",
22+
"default-features": false
1923
}
2024
]
2125
}

0 commit comments

Comments
 (0)