2009-08-06 71 views
2

我的開發環境是some_header.h/usr/include/another/directory/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.

任何想法?

+0

殺了我答案,我弄錯了。 – 2009-08-06 19:33:42

回答

4

你看過-nostdinc

手冊上說:

-nostdinc
不要搜索標準系統目錄中的頭文件。 僅搜索使用-I選項指定的目錄(以及當前文件的 目錄,如果適用)。

當然,這意味着你必須指定任何正常去,你想要的標準搜索路徑...

0

您是否嘗試過取消系統INCLUDE路徑環境變量的設置?

+0

嗯,它是空的,但沒關係。 gcc自動查找某些目錄,而不考慮環境變量。 http://gcc.gnu.org/onlinedocs/gcc-4.1.1/cpp/Search-Path.html#Search-Path – 2009-08-06 19:19:28

+0

啊,GCC的樂趣。 – 2009-08-06 20:56:22

4

使用-iquote開關:

包括在另一個/目錄使用引號中的文件:

#include "another_file.h" 

然後使用

gcc -iquote /another/include ... 

添加一個搜索路徑援引包含文件。此開關將添加一個目錄,該目錄在當前目錄之後和-I和系統包含路徑之前搜索帶引號的包含文件。

使用括號包含您的其他包含文件(即#include <header.h>)。

在這裏看到更多的信息: Where are include files stored - Ubuntu Linux, GCC

+0

這似乎非常接近工作,但事實證明/ another /目錄中的文件使用#include ,所以當我使用-iquote時他們找不到它們的包含文件。 – 2009-08-07 14:02:32

+0

嗯,那很奇怪。預處理器仍應在-I和系統包含路徑中搜索。似乎爲我工作。 – 2009-08-07 14:12:36