将 -std=c++11 设为 mac 终端的默认值
Posted
技术标签:
【中文标题】将 -std=c++11 设为 mac 终端的默认值【英文标题】:Making -std=c++11 the default in mac terminal 【发布时间】:2013-08-05 02:10:53 【问题描述】:当我要编译时,我需要像这样指定-std=c++11
:
g++ -Wall -std=c++11 main.cpp -o main
我想知道是否有永久设置 -std=c++11 标志的解决方案,以便可以这样做:
g++ -Wall main.cpp -o main
没有标志。
【问题讨论】:
alias g++='g++ -std=c++11'
?
另一种解决方案是修补 GCC,使其包含一些比默认使用 15 年的标准更新鲜/更明智的选项...
修补?否则,别名可以正常工作,谢谢。
那是一个答案。是的,我什至会考虑修补它(OS X 附带的 GCC 很古老......)
或者你可以创建一个makefile,就像你应该为c++和c做的那样
【参考方案1】:
创建一个别名:alias g++='g++ -std=c++11'
应该可以解决问题。
(不过OS X自带的GCC版本太老了,不支持C++11,最好用clang
和clang++
。)
【讨论】:
关于 clang 的嗡嗡声:clang --version Apple LLVM 版本 4.2 (clang-425.0.28)(基于 LLVM 3.2svn)目标:x86_64-apple-darwin12.4.0 线程模型:posix 但我不知道不知道怎么用 @Choubidou 好吧,就像您使用 GCC 一样。 (但是,嘿,你不能谷歌“clang 用法”吗?或者“clang 手册”?或者在命令行中输入clang --help
?)
@Choubidou 在 Mac 上如果你希望它是永久的,你应该把它放在你的 .bash_profile
【参考方案2】:
我知道这已经被接受了,但我觉得我有一些建议可以提供。对于一个你应该使用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++
。最后,您可以将我刚刚向您展示的行添加到您家中的 Mac 上的 .bash_profile
或 ~
文件夹中,这将使更改永久化。更改后运行source .bash_profile
以使更改生效。在 linux 上,我认为该文件称为.bashrc
。希望这些技巧能在你使用 c++ 时对你有所帮助,我建议你学习 mac 命令行,它与 linux 的命令行有所不同,了解它可以做的一些事情会非常有用。
【讨论】:
以上是关于将 -std=c++11 设为 mac 终端的默认值的主要内容,如果未能解决你的问题,请参考以下文章
将 python3 设为我在 Mac 上的默认 python