[英]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.