在编译期间,虽然我在CMake中添加了相应的包含目录,但找不到某些头文件。不幸的是,这是我坚持使用的代码和目录结构,我无法对include语句进行任何更改。
我有以下目录结构:
projectfolder
+--source1
| |--prog.cpp
| |--anotherHeader.h
| |--CMakeLists
|
+--includefolder
| +--source1_include
| | |--header.h
|
|--CMakeLists
项目文件夹中的CMakeLists如下所示:
project (project)
include_directories(includefolder)
add_subdirectory(source1)
prog.cpp有:
#include "source1_include/header.h"
和header.h有:
#include "anotherHeader.h"
(不要问我为什么,我不了解自己,也许这与最初这是Visual Studio项目的事实有关)
我想我可以通过添加
解决这个问题include_directories(.)
到source1目录中的CMakeLists但不幸的是它不会那样工作。找不到另一个Header.h。
答案 0 :(得分:1)
我假设"。"是"项目文件夹"
如果我理解正确,你添加了-I" projectfolder",所以现在" source1_include / header.h"正确找到" projectfolder / source1_include / header.h"
现在," header.h"尝试包含" anotherHeader.h",它不在其文件夹中,也不在任何包含的文件夹中。它实际上在" source1"。所以cmake错误输出是正确的。
你需要移动" anotherHeader.h"进入你的包含文件夹(我的推荐),或编辑" header.h"通过正确的相对路径找到它" ../ source1 / anotherHeader.h" (不推荐),或添加include_directories(" source1"),它实际上就是这样。