我使用cmake在Ubuntu 14.04中构建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”,我得到致命错误:致命错误:Camera.h:没有这样的文件或目录
请帮帮我。我的CmakeLists.txt错了吗?
答案 0 :(得分:0)
您应该使用target_include_directories()
告诉CMake将包含标头的特定 include目录与DisplayImage
目标相关联。假设您的Camera.h
文件与Camera.cpp
在同一目录中,则可以使用CMAKE_CURRENT_SOURCE_DIR
指定此目录。您还应该在此处添加${OpenCV_INCLUDE_DIRS}
,如“将OpenCV与CMake一起使用” tutorial所示。
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} )
注意:总是 在{{1}中指定作用域参数(例如PUBLIC
,PRIVATE
或INTERFACE
)是CMake的一种好做法}命令。