2009-11-03 22 views
1

如何阻止automake添加-I。到我的編譯線?如何阻止automake添加-I。到我的編譯線?

看來automake的或libtool的對象總是有類似的編譯命令:

g++ -DHAVE_CONFIG_H -I. -I./proj/otherdir -o myprog.o myprog.c 

的問題是,我有兩個名稱相同的頭文件....

./proj/otherdir/Header.h 
./proj/thisdir/Header.h 

每標題有一個名爲Header的類,雖然每個都在不同的名稱空間中。因此,當我在./proj/thisdir中構建時,「-I」。被包括在內,我無法進入./proj/otherdir中的頭文件。我不知道如何擺脫那個最初的「-I」。我不知道如何擺脫那個最初的「-I」。出現。

任何提示?

感謝 Chenz

回答

3

所有你需要做的Makefile.am

DEFAULT_INCLUDES = 
設置

然後在世界上都很好。

Chenz

0

看的configure.ac或configure.in爲您的應用程序,應該在那裏

+0

說些什麼?我不明白。我會說我自己寫了configure.ac,而且我沒有設置-I。那裏的任何地方。 只是爲了確保我已經對我的.ac文件和我編譯過的配置腳本進行了加密,並且沒有提及「-I」。 – 2009-11-03 21:42:27

3

如果你的API包括不同的頭時,我寫

#include <Header.h> 

,使該API混亂,而且容易出錯。

爲什麼不這樣定義

#include <thisdir/Header.h> 

#include <otherdir/Header.h> 

然後如果需要的話,你甚至可以同時參考報頭相同的源文件中的API。你只需閱讀include行就可以知道它實際包含的內容。

+0

不是我的代碼。試圖讓它建立。 – 2009-11-04 19:08:43

0

它沒有擺脫-I,但你可以把相對路徑在您的#include指令:

#include "../otherdir/Header.h" 
#include "../thisdir/Header.h" 
+0

我認爲相對路徑看起來馬虎。我總是寧願在編譯線上使用-I參數。雖然謝謝! – 2009-11-04 19:11:04

相關問題