在C ++中使用OpenCV 4.1.2时遇到问题。我有这个CMakelists.txt
:
cmake_minimum_required(VERSION 2.8.12)
project( Barcode-cpp )
find_package( OpenCV REQUIRED )
add_compile_options(-std=c++11)
add_library( src
src/VideoVeed.h
src/VideoVeed.cpp
)
add_executable( program
program/main.cpp
)
target_link_libraries( program
src
${OpenCV_LIBS}
)
如您所见,我有两个带有源代码的文件夹:
program
包含main.cpp
src
包含VideoVeed.h
和VideoVeed.cpp
当我像这样main.cpp
在<opencv2/opencv.hpp>
中包含OpenCV时,它可以正常工作。但是当我包含OpenCV (以相同的方式)时,它会给出错误fatal error: 'opencv2/opencv.hpp' file not found
。
我认为我在CMakelists.txt
中做错了什么,但我无法弄清楚到底是什么。
我希望有人能够帮助我。预先感谢!
答案 0 :(得分:2)
您应该添加行target_include_directories()
,以便在可执行文件中 included 包含OpenCV包含目录:
add_executable( program
program/main.cpp
)
target_include_directories(program PRIVATE ${OpenCV_INCLUDE_DIR})
根据您使用的OpenCV版本,您可能需要
改为使用OpenCV_INCLUDE_DIRS
:
add_executable( program
program/main.cpp
)
target_include_directories(program PRIVATE ${OpenCV_INCLUDE_DIRS})
编辑:OpenCV 4.1.2填充变量OpenCV_INCLUDE_DIRS
,因此这是您应该使用的变量。请参阅this教程。