Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CMake OpenCV更改库路径_C++_Opencv_Cmake_Cross Platform - Fatal编程技术网

C++ CMake 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

我正在尝试使用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(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的新手。提前谢谢