我正在使用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
答案 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