Mac OSX Mountain Lionでは http://hpc.sourceforge.net からgcc 4.8.1を使用しています。 to_string
内の<string>
関数を使用するC++プログラムをコンパイルしようとしています。毎回フラグ-std=c++11
を使う必要があります。
g++ -std=c++11 -o testcode1 code1.cpp
デフォルトでこのフラグを含める方法はありますか?
H2CO3が正しいので、CXXFLAGSを-std = c ++ 11に設定してメイクファイルを使用することができます。メイクファイルは、プログラムのコンパイル方法を説明した単純なテキストファイルです。 Makefileという名前の新しいファイルを作成します(大文字のM)。コードを自動的にコンパイルするには、端末でmakeコマンドを入力するだけです。 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ファイルがメイクファイルと同じディレクトリにあると仮定します。しかし、src、include、buildディレクトリをサポートするようにmakefileを簡単に微調整できます。
編集:私はデフォルトのc ++コンパイラを修正しました、私のバージョンのg ++は最新ではありません。 clang ++では、このmakefileはうまく機能します。
既に述べたように - プロジェクトの場合、Makefile
であれ、そうでなければ、これはプロジェクト設定の問題で、他のフラグも指定する必要があるかもしれません。
しかし、通常はg++ file.cpp && ./a.out
を書くだけの、1回限りのプログラムについてはどうでしょうか。
そうですね、ソースレベルで有効にする#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++
そのものにエイリアスすることさえできます。
Specsファイルを使ってそれができると思います。
MinGWの下であなたは走ることができます
gcc -dumpspecs> specs
それが言うところ
*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT}
あなたはそれをに変更します
*cpp:
%{posix:-D_POSIX_SOURCE} %{mthreads:-D_MT} -std=c++11
そしてそれを
/mingw/lib/gcc/mingw32/<バージョン>/specs
MinGWをビルドしなくても同じことができると確信しています。ただし、スペックファイルをどこに配置するのかわからない。
フォルダはおそらく/ gcc/lib /または/ gcc /のいずれかです。