![](/img/trans.png)
[英]How to generate dependencies with header files from different directories using a Makefile?
[英]How to #include files in separate directories using different IDEs?
我正在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
不幸的是,给定的编译器/ IDE如何定位依赖项完全取决于编译器/ IDE。 没有办法以所有开发环境都可以接受的方式进行安排。
我不知道Xcode或Codeblocks,但是我确定必须有一些项目配置来控制它们在哪里查找#include文件。
重新排列您的结构,以使一个项目只有一个公共的include目录:
/project/
/src/*.cpp
/include/*.hpp
/folder1/dog.hpp
/folder2/cat.hpp
现在说#include <config.hpp>
和#include <folder1/dog.hpp>
等,并添加到编译器标志中:
-I ${PROJECT_DIR}/include
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.