2013-02-15 36 views
1

我想用-Wconversion -Werror編譯大部分代碼。如何從g ++編譯器選項中排除文件

問題是我使用的是一個開源的.cpp文件,不應該修改,編譯它與那些標誌失敗,因爲該特定的.cpp文件有一些「隱式轉換可能會改變值」 。

我可以通過-Wconversion -Werror指令構建編譯所有其他文件,但是編譯沒有這些標記的文件?

+0

當然'make'可以被告知使用不同的選項來將源代碼編譯成目標文件,然後將目標文件鏈接到一個可執行文件中,儘可能多地滿足你所要求的規範。你正在尋找一個例子,或針對你的情況量身定製的方法? – hardmath 2013-02-15 16:37:33

+0

雖然我正在撰寫自己的想法,但以下是關於'make'的GNU教程(http://www.gnu.org/software/make/manual/make.html#Introduction)以供將來參考。 – hardmath 2013-02-15 16:45:28

+0

上述鏈接教程中的「簡單makefile」避免了任何用於生成目標文件的「常規」規則,併爲每個此類文件闡述了編譯器「配方」。所以簡短的答案是對特殊源文件有一個特殊的規則,然後是其他所有通配符驅動的配方。 – hardmath 2013-02-15 16:50:43

回答

1

make實用程序提供了一套豐富的工具來定製構建和默認爲常規邏輯的隱式過程。如果有與gcc工具鏈相關的問題,GNU make tutorial是一個很好的起點。

基本上,一個makefile包含用於構建項目的自定義邏輯。規則由表觀目標依賴性一個冒號在一行分開的,然後(可能是零或許多)食譜由製表符縮進解釋在構建目標步驟後續行。虛假目標,例如。爲了便於維護項目,也可以定義爲clean

如果有特定於目標的規則,則優先使用該規則來優先於任何隱式規則來構建該目標。 OP可能只需要將特定於目標的規則添加到現有的makefile中,該makefile將管理編譯器選項的使用(從源構建對象)。

+1

唯一的缺點是GNU Make令人討厭的錯誤。例如,在我的一個項目中,我得到了「警告:重寫目標'單元測試/測試-a-main.cpp'的配方」,但這不是一個表演阻止者。 – 2013-02-15 22:46:18

相關問題