Md *_*man 2 c++ linux 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
Run Code Online (Sandbox Code Playgroud)
您可以传递其他参数,以make覆盖默认值.
$ make [TARGET]... [VARIABLE=VALUE]...
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您希望将-std=c++11开关添加到C++编译器.C++编译器的标志存储在名为的变量中CXXFLAGS.所以你可以试试这个.
$ make a CXXFLAGS='-std=c++11'
Run Code Online (Sandbox Code Playgroud)
注意,变量CPPFLAGS不不持有标志为C++编译器,但为C(和C++)的预处理器.因此,如果将-std=c++11开关添加到它,如果用它调用C编译器,你会得到一个惊喜.
实际上,由于-std交换机从根本上修改了编译器接受的语言,我更愿意将其视为编译器标志而不是编译器选择,因此我更喜欢覆盖CXX包含C++编译器名称的变量.
$ make a CXX='g++ -std=c++11'
Run Code Online (Sandbox Code Playgroud)
这还有一个优点,就是保留任何其他编译器标志,例如-Wall -O2 -g或者你有什么.
| 归档时间: |
|
| 查看次数: |
3042 次 |
| 最近记录: |