Mac OSX Mountain Lionではhttp://hpc.sourceforge.netの gcc 4.8.1を使用しています。のto_string
関数を使用するC ++プログラムをコンパイルしようとしています<string>
。-std=c++11
毎回フラグを使用する必要があります:
g++ -std=c++11 -o testcode1 code1.cpp
デフォルトでこのフラグを含める方法はありますか?
Mac OSX Mountain Lionではhttp://hpc.sourceforge.netの gcc 4.8.1を使用しています。のto_string
関数を使用するC ++プログラムをコンパイルしようとしています<string>
。-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ファイルがmakefileと同じディレクトリにあると想定しています。しかし、src、include、およびbuildディレクトリをサポートするようにmakefileを簡単に調整できます。
編集:デフォルトのc ++コンパイラを変更しました。私のバージョンのg ++は最新ではありません。clang ++では、このメイクファイルは正常に機能します。
前述のとおり-プロジェクトの場合、Makefile
またはその他の場合、これはプロジェクト構成の問題であり、他のフラグも指定する必要がある可能性があります。
しかし、通常はただ書くだけの1回限りのプログラムについてはどうでしょうg++ file.cpp && ./a.out
か。
まあ、私は非常にいくつか持っていると思います#pragma
言う-ソースレベル、または多分デフォルトの拡張子で上にオンにする.cxx
か、.C11
デフォルトまたは何でも、トリガーを。しかし、現在のところ、そのような機能はありません。
しかし、おそらく手動環境(つまりシェル)で作業しているので、エイリアスを自分.bashrc
(または何でも)に含めることができます。
alias g++11="g++ -std=c++0x"
または、新しいG ++(および「本物のC ++ 11」を感じたい場合)
alias g++11="g++ -std=c++11"
g++
C ++ 03がそんなに嫌いなら、自分自身にエイリアスすることもできます;)
スペックファイルを使用してそれを行うことができると思います。
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 / <version> / specsに配置します
MinGWビルドがなくても同じことができると思います。specsファイルをどこに置くかわかりません。
フォルダーはおそらく/ gcc / lib /または/ gcc /のいずれかです。
strace -f gcc your-sources-here 2>&1 | grep specs
。1つの(古い)Debianシステムでは、これはをもたらし/usr/lib/gcc/i586-linux-gnu/4.9/specs
ます。specs
回答に記載されているように作成し(Linuxでsudoをそこに移動する必要があります)、魅力のように動作します!ありがとう。
sublimeを使用している場合、ビルドでシステムを構築するためのコードとして追加すると、このコードが機能する可能性があります。詳細については、このリンクを使用できます。
{
"shell_cmd": "g++ \"${file}\" -std=c++1y -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"shell_cmd": "g++ \"${file}\" -std=c++1y -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
}
]
}
CXXFLAGS
ます。