将-std = c ++ 11设为mac终端的默认值

时间:2013-08-04 05:39:52

标签: c++ macos gcc c++11 terminal

当我想编译时,我需要像这样指定-std=c++11

g++ -Wall -std=c++11 main.cpp -o main

我想知道是否有永久设置-std = c ++ 11标志的解决方案,以便可以这样做:

 g++ -Wall main.cpp -o main

没有旗帜。

2 个答案:

答案 0 :(得分:11)

创建一个别名:alias g++='g++ -std=c++11'应该可以解决问题。

(但是,OS X附带的GCC版本是如此古老以至于它不支持C ++ 11,您最好使用clangclang++。)< / p>

答案 1 :(得分:5)

我知道这已经被接受,但我觉得我有一些建议可以提供。对于一个你应该使用c ++的makefile,这是我用来回答SO的那个。

CFLAGS=-std=c++11 
CFLAGS+=-stdlib=libc++
CC=clang++
#flags for test.c
cc=clang
DEBUG=-g
#warnings
WARNINGS=-Weverything
#always have -Weverything on for SO lol
OPT= -O0 -O1 -O2 -O3 -O4

test: test.cpp
    $(info set CC for compiler)
    $(CC) $(CFLAGS) $< -o $@ $(DEBUG) 

stack: stack.cpp
    $(CC) $(CFLAGS) stack.cpp -o $@ $(DEBUG) $(WARNINGS)

testc: test.c
    $(cc) $< -o $@ $(DEBUG) 


clean:
    rm test

现在每当我从SO下载某些蹩脚的代码时,我都有一个c和c ++文件的makefile,如果我愿意,我可以轻松更改标志。

至于bash别名,我建议你将其别名为alias clang++11='clang++ -std=c++11,这样如果你不想使用c ++ 11标准就不会覆盖clang++。最后,您可以将我刚刚显示的行添加到您家中或.bash_profile文件夹中的mac上的~,这将使更改成为永久性更改。更改后,请运行source .bash_profile以使更改生效。在linux上我认为该文件名为.bashrc。希望这些技巧可以帮助你解决问题,我建议你学习mac命令行,与linux有区别,知道它可以做的一些事情非常有用。