簡體   English   中英

如何編輯默認的makefile

[英]How to edit the default makefile

我可以編輯默認的makefile嗎? 我想將-std=c++11標志添加到默認的makefile中,以便make命令可以編譯和構建C ++ 11程序。

例如,當前,當我嘗試使用make命令編譯程序時,會發生以下錯誤:

g++ a.cpp -o a

a.cpp: In function ‘int main()’:

a.cpp:118:12: error: ISO C++ forbids declaration of ‘it’ with no type [-fpermissive]

  for(auto &it : v) cout << it << endl;
            ^

a.cpp:118:17: warning: range-based ‘for’ loops only available with -std=c++11 or -std=gnu++11
  for(auto &it : v) cout << it << endl;
                 ^

<builtin>: recipe for target 'a' failed

make: *** [a] Error 1

您可以傳遞其他參數以make將覆蓋默認值。

$ make [TARGET]... [VARIABLE=VALUE]...

在您的情況下,您想將-std=c++11開關添加到C ++編譯器。 C ++編譯器的標志存儲在名為CXXFLAGS的變量中。 所以您可以嘗試一下。

$ make a CXXFLAGS='-std=c++11'

注意,變量CPPFLAGS 成立標志為C ++編譯器,但為C(和C ++)的預處理器。 因此,如果將-std=c++11開關添加到它,則如果使用C編譯器對其進行調用,將會感到非常驚訝。

實際上,由於-std開關從根本上修改了編譯器接受的語言,因此我更喜歡將其視為編譯器選擇而不是編譯器標志,因此我更喜歡覆蓋包含C ++編譯器名稱的CXX變量。

$ make a CXX='g++ -std=c++11'

這還有一個優點,就是您可以保留任何其他編譯器標志,例如-Wall -O2 -g或您擁有的標志。

如果還沒有創建帶有源代碼的目錄中的makefile ,則將使用空文件來啟動。

在您的makefile文件中,添加一行

CXXFLAGS='-std=c++11'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM