不推荐使用GCC标头搜索路径

时间:2015-04-23 19:14:25

标签: c gcc

我发现了一个不寻常的C makefile设置,它依赖于GCC的弃用功能,似乎没有现代替代品。

该系统需要在包含它们之前预处理或“烹饪”本地头文件。 makefile处理这个并将熟版本放在本地'./prepared/'目录中。头文件使用正常名称(例如#include "name.h")正常包含在c中。系统只需要'./prepared/'在'。'之前在GCC头文件搜索路径中出现。

Gcc曾经提供-I-选项来删除默认的'。'并允许在其之前添加标题搜索路径条目,但不推荐使用此选项。

来自gcc docs:

  

GCC首先查找#include“file”请求的标头   包含当前文件的目录,然后在目录中   由-iquote选项指定,然后在相同的位置   找了一个尖括号请求的标题。例如,   如果/usr/include/sys/stat.h包含#include“types.h”,GCC看起来   对于types.h,首先在/ usr / include / sys中,然后在其通常的搜索路径中。

是否无法再在gcc中正确控制C头搜索路径?或者还有另一种合理的前进方向吗?我不想使用可能会消失的弃用功能。现在我很遗憾地过滤了gcc已弃用的功能警告消息以隐藏它们。我没有创建构建环境,以打破'烹饪'的方式解决问题是不受欢迎的。

1 个答案:

答案 0 :(得分:0)

据我所知,GCC没有提供其他手段比你&#39的一个; VE描述,以避免具有每个源文件' S目录首先在编译该文件时使用的包含搜索路径

最好的解决方案可能是修复标题并构建系统以摆脱标题烹饪。这样的计划非常不寻常 - 几乎所有其他人都没有。

如果您必须继续依赖标题烹饪,那么您可能应该将原始标题移动到不在包含搜索路径中的目录。例如,创建一个" include"主源目录的子目录,并将它们放在那里。

编辑添加: 另一种方法是从引用的包含样式切换到包含角度的包含样式,并依赖-I选项来设置所需的内部包含目录。