C:#include中的前缀

时间:2017-04-25 12:24:26

标签: c gcc makefile

假设我们在目录project1project2中有两个C项目,每个项目都有自己的include目录。 project1/src中的来源是否可以包含来自project2的标头文件,如#include <project2/def.h> def.h中存在project2/include/def.h

感谢。

编辑:为了说清楚,让我们说你有这两个项目:

project1/
  - Makefile
  - include/def.h
  - main.c

project2/
  - Makefile
  - include/def.h
  - main.c

问题是,你可以 中的引用带有这样一个include的项目 <(例如,在project1/main.c中):

#include <project2/def.h>

答案是否定的。

1 个答案:

答案 0 :(得分:1)

从技术上讲,你不能

如果你真的想要:

#include <project2/def.h>

但有project2/include/def.h,您有两种方法可以处理:

如果使用-Iproject2/include进行编译,则创建一个子目录并将标题放在那里:

project2/include/project2/def.h

您将从project1包含为#include <project2/def.h>

或者,您可以创建包含project2/def.h的标题#include project2/include/def.h,然后调用-I.,其中.project2上方的目录源。

在我看来,更好的解决方案是第一个,因为它不依赖于知道你如何命名你的project2来源目录(它可以在本地命名为foobar,你&#39;我仍然可以-I/path/to/foobar/include/和`#include。