如何在gcc中启用C ++ 11?
我在Mac OSX Mountain Lion上使用http://hpc.sourceforge.net上的gcc 4.8.1。 我想编译一个C ++程序,它使用<string>
的to_string
函数。 我需要每次使用flag -std=c++11
:
g++ -std=c++11 -o testcode1 code1.cpp
有没有办法在默认情况下包含这个标志?
H2CO3是正确的,你可以使用一个makefile来设置CXTFLAGS和-std = c ++ 11 makefile是一个简单的文本文件,里面有关于如何编译程序的说明。 创build一个名为Makefile的新文件(大写M)。 要自动编译您的代码,只需在terminal中inputmake命令。 您可能需要安装make。
这是一个简单的:
CXX=clang++ CXXFLAGS=-g -std=c++11 -Wall -pedantic BIN=prog SRC=$(wildcard *.cpp) OBJ=$(SRC:%.cpp=%.o) all: $(OBJ) $(CXX) -o $(BIN) $^ %.o: %.c $(CXX) $@ -c $< clean: rm -f *.o rm $(BIN)
它假定所有.cpp文件都与makefile位于同一个目录中。 但是你可以轻松地调整你的makefile以支持src,include和build目录。
编辑 :我修改了默认的c ++编译器,我的g ++版本不是最新的。 与铿锵++这个生成文件工作正常。
正如前面提到的 – 对于项目, Makefile
或其他项目,这是项目configuration问题,您可能还需要指定其他标志。
但是,一次性程序如何,通常只写g++ file.cpp && ./a.out
?
嗯,我非常希望在源代码级别有一些#pragma
开启,或者默认的扩展名 – 例如.cxx
或者.C11
或者其他,默认触发它。 但截至今天,没有这样的特点。
但是,因为您可能正在手动环境(即shell)中工作,您可以在您的.bashrc
(或其他)中有一个别名:
alias g++11="g++ -std=c++0x"
或者,对于较新的G ++(以及想要感受“真正的C ++ 11”)
alias g++11="g++ -std=c++11"
如果你讨厌C ++ 03那么甚至可以用别名来g++
;)
我认为你可以使用规格文件。
在MinGW下,你可以运行
gcc -dumpspecs>规格
它在哪里说
*cpp: %{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT}
你改变它
*cpp: %{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} -std=c++11
然后放进去
/ mingw的/ LIB / GCC /的mingw32 / <版本> /规格
我敢肯定,如果没有MinGW构build,你也可以做同样的事情。 不知道在哪里放置规格文件。
该文件夹可能是/ gcc / lib /或/ gcc /。