cmake找不到头文件

Posted

技术标签:

【中文标题】cmake找不到头文件【英文标题】:header file isn't found by cmake 【发布时间】:2016-11-29 21:49:48 【问题描述】:

我有一个只有标题的文件夹。

在我的 config 项目中,我需要 param 项目的一些接口

src
  CMakeList.txt
  - config
    - CMakeList.txt
  - param
    - CMakeList.txt
    - parameter.h

这是我的 config CMakeList.txt

project(config)
file(GLOB_RECURSE SOURCES "$config_SOURCE_DIR/*.cpp")

add_library(config $SOURCES)

target_include_directories(config PUBLIC "$param_SOURCE_DIR")
target_include_directories(config PUBLIC "$Utils_SOURCE_DIR/include")

qt5_use_modules(config Core)
target_link_libraries(config)

我的 param 库 CMakeList.txt 是(它也需要 Utils)

project(param)
file(GLOB_RECURSE HEADERS "$param_SOURCE_DIR/*.h")

add_library(param INTERFACE)

然后在我的配置项目中,我有一个包含接口之一的类,并且在构建它时找不到它。未找到“parameter.h”文件。

/usr/local/bin/clang++   -DQT_CORE_LIB -DQT_NO_DEBUG -I/builds/modules/project/src/config -I~/modules/project/src/config -I/usr/include/eigen3 -I~/modules/libs/utils/include -isystem ~/devel/qt5/qtbase/include -isystem ~/devel/qt5/qtbase/include/QtCore -isystem ~/devel/qt5/qtbase/./mkspecs/linux-g++  -fPIC -std=gnu++11 -o CMakeFiles/config.dir/configuration.cpp.o -c ~/modules/project/src/config/configuration.cpp

config 中的一个源文件无法编译,原因是:

fatal error: 'parameter.h' file not found
#include "parameter.h"

【问题讨论】:

使用make VERBOSE=on 查看是否添加了包含。您的错误消息有点短。 不包括在内。它不在列出的文件夹列表中。我看到了 Utils 文件夹。 您能否再次检查(使用message)您的变量 param_SOURCE_DIR 和 Utils_SOURCE_DIR 是否符合您的预期? @usr1234567 是的,这些目录是预期的。 【参考方案1】:

src/CMakeLists.txt 你显然需要

include_directories(param)

线。或者,您可以在src/config/CMakeLists.txt 中使用include_directories(../param)

include_directories() 命令为当前CMakeLists.txt 和每个add_subdirectoryed 中声明的所有目标将指定目录添加到编译器搜索路径。

【讨论】:

以上是关于cmake找不到头文件的主要内容,如果未能解决你的问题,请参考以下文章

CMake找不到头文件

cmake找不到头文件

vc++编程找不到头文件。。。急求解决方法。。

[VScode]关于找不到头文件的解决

如何解决gcc编译c程序找不到头文件的问题

关于VC6.0的找不到头文件的问题