【发布时间】:2020-10-01 13:50:22
【问题描述】:
我正在尝试在我的 c++ 项目中包含 opencv。我希望 CMake 为我处理这个问题。
目前我需要在标签中包含 opencv:#include <opencv2/opencv.hpp>
_deps/opencv-src 目录中的文件虽然会抛出以下错误:
Scanning dependencies of target VisionC
Building CXX object CMakeFiles/VisionC.dir/main.cpp.o
In file included from /Users/koen/Vakken/MotionVision/VisionC/main.cpp:2:
/Users/koen/Vakken/MotionVision/VisionC/cmake-build-debug/_deps/opencv-src/include/opencv2/opencv.hpp:48:10: fatal error: 'opencv2/opencv_modules.hpp' file not found
#include "opencv2/opencv_modules.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
似乎文件不能包含自己的标题
我的 CMakeLists 文件仍然很简单:
cmake_minimum_required(VERSION 3.17)
project(VisionC)
set(CMAKE_CXX_STANDARD 20)
include(FetchContent)
FetchContent_Declare(
opencv
GIT_REPOSITORY https://github.com/opencv/opencv.git
GIT_TAG 4.4.0
)
FetchContent_GetProperties(opencv)
if (NOT opencv_POPULATED)
FetchContent_Populate(opencv)
add_subdirectory(${opencv_SOURCE_DIR} ${opencv_BINARY_DIR})
include_directories(${opencv_SOURCE_DIR}/include) # "/include" should be deleted somehow...
endif ()
FetchContent_MakeAvailable(opencv)
add_executable(VisionC main.cpp)
target_link_libraries(VisionC opencv_lib)
我认为 include_directories 行中的“/include”暗示该库包含在“高”目录中……我不知道应该如何更改它。如果我删除这一行,我必须包含 opencv,如 #include <include/opencv2/opencv.hpp>
【问题讨论】: