C ++ OpenCV包含错误“找不到文件”

时间:2019-11-19 12:46:26

标签: c++ opencv cmake

在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.hVideoVeed.cpp

当我像这样main.cpp<opencv2/opencv.hpp>中包含OpenCV时,它可以正常工作。但是当我包含OpenCV (以相同的方式)时,它会给出错误fatal error: 'opencv2/opencv.hpp' file not found

我认为我在CMakelists.txt中做错了什么,但我无法弄清楚到底是什么。

我希望有人能够帮助我。预先感谢!

1 个答案:

答案 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教程。