CM生成带有添加头文件的错误-致命错误:找不到文件

问题描述 投票:4回答:1

[我使用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,然后收到一个致命错误:

fatal error: Camera.h: No such file or directory

请帮助我。我的CmakeLists.txt错误吗?

cmake header-files fatal-error
1个回答
0
投票

您应使用target_include_directories()告诉CMake将包含标题的特定包含目录target_include_directories()目标相关联。假设您的DisplayImage文件与Camera.h在同一目录中,则可以使用Camera.cpp指定此目录。您还应该在此处添加CMAKE_CURRENT_SOURCE_DIR,如“在CMake中使用OpenCV” CMAKE_CURRENT_SOURCE_DIR所示。

${OpenCV_INCLUDE_DIRS}

注意:总是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} ) PUBLICPRIVATE)是CMake的一种好做法。

© www.soinside.com 2019 - 2024. All rights reserved.