【问题标题】:Making -std=c++11 the default in mac terminal将 -std=c++11 设为 mac 终端的默认值
【发布时间】: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做的那样

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


【解决方案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 的命令行有所不同,了解它可以做的一些事情会非常有用。

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 2020-08-16
    • 2021-12-07
    • 1970-01-01
    • 2019-05-31
    • 2020-10-13
    • 2016-04-25
    • 2022-06-12
    • 1970-01-01
    相关资源
    最近更新 更多