包括来自并行目录结构的文件

时间:2013-10-26 20:46:07

标签: c++ cmake include-path

不完全重复:CMake include path

我最初有这样的目录结构:

root
    src
        foodir
            foo.cpp
            foo.h

然后将头文件移动到他们自己的并行目录中:

root
    src
        foodir
            foo.cpp
    include
        foodir
            foo.h

问题是..如果foo.cpp过去只使用#include "foo.h",它现在必须使用#include "foodir/foo.h"(使用-Iinclude编译)。

好的,所以这不是一个真正的“问题”,但最好是保留“foo.h”而不是“foodir / foo.h”(很多文件)。有没有办法,使用cmake,让编译器查看include/对应的子目录?

2 个答案:

答案 0 :(得分:2)

要将include/foodir添加到编译器搜索路径列表中,只需使用include_directories即可。假设您的顶级CMakeLists.txt位于“root”中:

include_directories(${CMAKE_SOURCE_DIR}/include/foodir)

答案 1 :(得分:1)

您只需传递一个合适的-I<dir>/foobar参数即可。例如,-Iinclude/foobar可能有效。使用make时,您通常会将选项添加到CPPFLAGS(当然使用的是什么,取决于项目特定的规则)。