如何#include使用不同IDE的单独目录中的文件?

时间:2011-12-18 02:48:50

标签: c++ c xcode include codeblocks

我正在使用MacOS X上的Xcode开发一个C ++项目,现在我开始使用Code :: Blocks IDE将它移植到Linux。

我的许多源文件都在不同的目录中,我遇到了包括它们在内的问题。

以下是此问题的一个示例:

folder1/foo.h

folder2/dog.h

foo.h includes dog.h with: `#include "dog.h"`

如果同一个项目中的两个文件都适用于Xcode,但是如果我在Code :: Blocks中尝试它,则发现它时会出错。

我可以通过更改代码来使用相对包含路径来修复Code :: Blocks中的这个问题,例如:

#include "../folder2/dog.h"

不幸的是,这样做会阻止Xcode找到该文件。

如何解决此问题,以便在多个IDE中编译相同的代码?我想避免将所有源都放在同一个文件夹中。我应该使用类似于:

的预处理器语句
#if XCODE
#include "dog.h"
#else
#include "../folder2/dog.h"
#endif

2 个答案:

答案 0 :(得分:3)

遗憾的是,给定的编译器/ IDE如何定位依赖项完全是编译器/ IDE特定的。没有办法以这样的方式安排它,以便它将被所有开发环境所尊重。

我不知道Xcode或Codeblocks,但我确信必须有一些项目配置来控制他们查找#include文件的位置。

答案 1 :(得分:3)

重新排列结构,以便一个项目只有一个公共包含目录:

/project/
        /src/*.cpp
        /include/*.hpp
                /folder1/dog.hpp
                /folder2/cat.hpp

现在说#include <config.hpp>#include <folder1/dog.hpp>等,并添加到编译器标志:

-I ${PROJECT_DIR}/include