将 -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,最好用clangclang++。)

【讨论】:

关于 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

Ubuntu中怎样修改命令终端Terminal的配色方案

在mac终端设置默认目录

将mac终端的默认目录改成desktop

mac系统上使用CRT作为终端,请教如何终止 traceroute

mac 终端修改mysql密码(超详细)