包含时 C++ ZBar cmake 错误 'File not found'

C++ ZBar cmake error 'File not found' when including

我在 C++ 脚本中包含 ZBar 时遇到问题。我已经尝试通过 CMakelists.txt:

添加它
cmake_minimum_required(VERSION 2.8.12)
project( Barcode-cpp )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} ${ZBARCV_SOURCE_DIR} )
set(CMAKE_MODULE_PATH ${ZBARCV_SOURCE_DIRS})
add_compile_options(-std=c++11)
add_library( src
        src/VideoVeed.h
        src/VideoVeed.cpp
        src/Crop.h
        src/Crop.cpp
        src/Barcodes.h
        src/Barcodes.cpp
)
add_executable( program
            program/main.cpp
)
target_link_libraries( program src ${OpenCV_LIBS} ${ZBAR_LIBRARIES} zbar )

我在 mac。我看了看,我的 zbar.h 文件位于 /usr/local/include/ 它应该在的地方。

我是这样包含的:#include <zbar.h>

我希望有人能帮助我。提前致谢!

编辑:

完整make错误日志:

/Users/mathijs/Documents/Barcode-cpp/src/Barcodes.h:7:10: fatal error: 'zbar.h' file not found
#include <zbar.h>
         ^~~~~~~~
1 error generated.
make[2]: *** [CMakeFiles/src.dir/src/VideoVeed.cpp.o] Error 1
make[1]: *** [CMakeFiles/src.dir/all] Error 2
make: *** [all] Error 2

我刚查过; ZBar 的 Brew 包包含一个 packageconfig 文件 (zbar.pc)

这意味着您可以使用现代 CMake 工具而不是 cargo culting:

cmake_minimum_required(VERSION 3.8)
project( Barcode-cpp )
find_package( OpenCV REQUIRED )
include_directories(${OpenCV_INCLUDE_DIRS})
set(CMAKE_CXX_STANDARD 11)

add_library( src
        src/VideoVeed.h
        src/VideoVeed.cpp
        src/Crop.h
        src/Crop.cpp
        src/Barcodes.h
        src/Barcodes.cpp
)
add_executable( program
            program/main.cpp
)
target_link_libraries(program src ${OpenCV_LIBS})

find_package(PkgConfig REQUIRED)
pkg_check_modules(ZBar REQUIRED IMPORTED_TARGET zbar)

target_link_libraries(program PkgConfig::ZBar)

pkg_check_modules 将读取 zbar.pc 文件并生成一个名为 PkgConfig::ZBarIMPORTED 目标,它将自动为 program 设置包含路径和链接器路径].