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_subdirectory
ed 中声明的所有目标将指定目录添加到编译器搜索路径。
【讨论】:
以上是关于cmake找不到头文件的主要内容,如果未能解决你的问题,请参考以下文章