C++ CMake OpenCV更改库路径
我正在尝试使用CMake和OpenCV-4.5.0编写一个跨平台项目。OpenCV是从源代码构建的。这是我的主要C++ CMake OpenCV更改库路径,c++,opencv,cmake,cross-platform,C++,Opencv,Cmake,Cross Platform,我正在尝试使用CMake和OpenCV-4.5.0编写一个跨平台项目。OpenCV是从源代码构建的。这是我的主要CMakeLists.txt: cmake_minimum_required(VERSION 3.10) set(CMAKE_CXX_STANDARD 11) project(detector) include(ExternalProject) set(BIN_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin) set(OPE
CMakeLists.txt
:
cmake_minimum_required(VERSION 3.10)
set(CMAKE_CXX_STANDARD 11)
project(detector)
include(ExternalProject)
set(BIN_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/../bin)
set(OPENCV_BIN_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}/opencv)
set(DETECTOR_BIN_OUTPUT_DIRECTORY ${BIN_OUTPUT_DIRECTORY}/detector/)
# ________________________________build opencv-4.5.0____________________________________
set(OPENCV_SRC ${CMAKE_BINARY_DIR}/../source/opencv-4.5.0)
set(OPENCV_BIN ${CMAKE_BINARY_DIR}/opencv-build)
ExternalProject_Add(opencv
SOURCE_DIR ${OPENCV_SRC}
BINARY_DIR ${OPENCV_BIN}
CMAKE_ARGS
-DCMAKE_BUILD_TYPE=Release
-DBUILD_DOCS:BOOL=FALSE
-DBUILD_EXAMPLES:BOOL=FALSE
-DBUILD_TESTS:BOOL=FALSE
-DBUILD_PERF_TESTS:BOOL=FALSE
-DBUILD_opencv_java=OFF
-DBUILD_opencv_python=OFF
-DBUILD_opencv_world=ON
-DWITH_FFMPEG:BOOL=FALSE
-DCMAKE_INSTALL_PREFIX=${OPENCV_BIN_OUTPUT_DIRECTORY}
)
include_directories(${OPENCV_BIN_OUTPUT_DIRECTORY}/include/)
link_directories(${OPENCV_BIN_OUTPUT_DIRECTORY}/x86/vc15/lib/)
# ________________________________build detector____________________________________
add_executable(detector ${CMAKE_BINARY_DIR}/../source/detector/src/main.cpp)
add_dependencies(detector opencv)
target_link_libraries(detector opencv_world450)
set_target_properties(detector PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${DETECTOR_BIN_OUTPUT_DIRECTORY})
set_target_properties(detector PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${DETECTOR_BIN_OUTPUT_DIRECTORY})
set_target_properties(detector PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${DETECTOR_BIN_OUTPUT_DIRECTORY})
install(TARGETS detector)
add_custom_target(copy_dll
COMMAND ${CMAKE_COMMAND} -E copy ${OPENCV_BIN_OUTPUT_DIRECTORY}/x86/vc15/bin/opencv_world450.dll ${DETECTOR_BIN_OUTPUT_DIRECTORY}
)
add_dependencies(detector copy_dll)
一切都很顺利。由于该项目是跨平台的,所以我设置了最终可执行文件${DETECTOR\u BIN\u OUTPUT\u DIRECTORY}
的路径。问题在于OpenCV的相同功能。对于它,我只能指定bin的路径。要将opencv链接到我的项目,我必须写:
include_directories(${OPENCV_BIN_OUTPUT_DIRECTORY}/include/)
link_directories(${OPENCV_BIN_OUTPUT_DIRECTORY}/x86/vc15/lib/)
如何指定include
和lib
OpenCV的路径,使其在任何系统上都能工作
另外,我是cmake的新手。提前谢谢