2015-09-26 94 views
1

我通常在編寫自己的代碼時使用IDE。我不很懂化妝,配置腳本等配置腳本中的CFLAGS

我工作的一個龐大而複雜的現有項目,現在,建設步驟是:

./autogen.sh 
./configure 
make 

我寫我自己C文件並將它們添加到Makefile.am。然後我重複這個過程來建立。

一切都很好,除了一件事。我想建立沒有任何編譯器選項如-Wall。有人告訴我,使用CFLAGS這樣會給我我想要的東西:

./configure CFLAGS=-O0 

它似乎沒有工作,因爲編譯器仍然使用-Wall選項。我可以從配置腳本中的CFLAGS =「...」手動刪除所有的-Wall事件。這很煩人,但它工作。但後來當我執行

./autogen.sh 

配置腳本與所有(我不想和其他CLFAGS)的-Walls的復位回到原來的位置。 (我不確定,但我想我必須在每次向Makefile.am添加新文件時運行autogen.sh。)

有沒有更好的方法來處理這個問題?

+2

爲什麼你不修復你的代碼,以便它用'-Wall'靜靜地編譯?事實上,當'-Wall'發出警告時,是否安全使用? –

回答

2

最簡單的方法可能是這樣做時,實際上建設,使用make

make CFLAGS=-O0 

這僅適用於搭建臨時不過,它不會是永久性的。

+0

謝謝,這有幫助,但現在我有另一個問題。顯然,還有一個選項'Wl,--soname',我也需要以某種方式禁用。有任何想法如何禁用此選項? –

+0

@詹姆斯米勒看起來像一個鏈接器標誌,這是'LDFLAGS' –

1

做一個

./configure --help 

顯示

Some influential environment variables: ... 
    CFLAGS  C compiler flags 

更好的方法是

env CFLAGS="-O0" ./configure 

那麼簡單

make 

按照您的預期行事。這對設置其他編譯標誌很有幫助。

+1

建議通常是相反的。而不是'CFLAGS = -O0。/ configure',最好使用'./configure CFLAGS = -O0',因爲在這種情況下'./configure'腳本會記錄這個變量已被設置的事實,並確保它是如果你執行'./config.status --recheck',再次設置。 (聽起來好像這不是OP的問題,但是) –