操作包含文件的搜索路径
Posted
技术标签:
【中文标题】操作包含文件的搜索路径【英文标题】:Manipulating the search path for include files 【发布时间】:2010-11-17 11:11:29 【问题描述】:我的开发环境是这样的,我在/usr/include
和/another/directory
中有some_header.h
。 /another/directory
包含一些我需要包含在我的程序中的头文件,但我想使用来自/usr/include
的some_header.h
。当我使用
gcc ... -I/another/directory
gcc 使用/another/directory/some_header.h
。如果我使用
gcc ... -I/usr/include -I/another/directory
gcc 做同样的事情是因为它忽略了/usr/include
,因为它是标准搜索路径的一部分,但它会在-I.
包含的非标准目录之后进行搜索
有什么想法吗?
【问题讨论】:
杀死了我的答案,我把它倒退了。 【参考方案1】:使用 -iquote 开关:
使用引号包含 另一个/目录 中的文件:
#include "another_file.h"
然后使用
gcc -iquote /another/include ...
为引用的包含文件添加搜索路径。此开关将在当前目录之后和 -I 和系统包含路径之前添加一个用于搜索引用的包含文件的目录。
使用括号包含您的其他包含文件(即#include <header.h>
)。
请参阅此处了解更多信息: Where are include files stored - Ubuntu Linux, GCC
【讨论】:
这似乎非常接近工作,但事实证明 /another/directory 中的文件使用 #include你看过-nostdinc
吗?
手册说:
-nostdinc 不要在标准系统目录中搜索头文件。 只有您使用 -I 选项指定的目录(以及 搜索当前文件的目录(如果适用)。
当然,这意味着 您 必须指定通常在标准搜索路径上出现的任何内容,而您确实想要...
【讨论】:
【参考方案3】:您是否尝试过取消设置系统 INCLUDE 路径环境变量?
【讨论】:
嗯,它是空的,但这没关系。 gcc 会自动查找某些目录,而不考虑环境变量。 gcc.gnu.org/onlinedocs/gcc-4.1.1/cpp/…以上是关于操作包含文件的搜索路径的主要内容,如果未能解决你的问题,请参考以下文章
makefile : 如何链接来自不同子目录的目标文件并包含不同的搜索路径