我在 Ubuntu 14.04 中使用 CMake 构建 C++ 源文件。
我有一个主要源文件。这包括一个头文件,其中包含另一个源文件中的函数。
我的主要源文件是 DisplayImage.cpp,头文件是 Camera.h,其中包含源文件 Camera.cpp。
每个文件都位于一个文件夹中。我有一个 CmakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp Camera.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
当我执行命令时cmake .
在终端中,配置成功。之后,我执行命令make
,我得到一个致命错误:
fatal error: Camera.h: No such file or directory
请帮我。我的CmakeLists.txt错误吗?
你应该使用target_include_directories() https://cmake.org/cmake/help/latest/command/target_include_directories.html告诉 CMake 关联特定的包含目录包含您的标头DisplayImage
目标。假设你的Camera.h
文件与以下目录位于同一目录中Camera.cpp
, 您可以使用CMAKE_CURRENT_SOURCE_DIR https://cmake.org/cmake/help/latest/variable/CMAKE_CURRENT_SOURCE_DIR.html来指定这个目录。您还应该添加${OpenCV_INCLUDE_DIRS}
这里,如《Using OpenCV with CMake》所示tutorial https://docs.opencv.org/master/db/df5/tutorial_linux_gcc_cmake.html.
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp Camera.cpp )
target_include_directories(DisplayImage PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${OpenCV_INCLUDE_DIRS}
)
target_link_libraries( DisplayImage PRIVATE ${OpenCV_LIBS} )
注意:这是一个很好的 CMake 实践always指定范围参数(例如PUBLIC
, PRIVATE
, or INTERFACE
) 在里面target_*
命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)