127

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

デフォルトでこのフラグを含める方法はありますか?

4

4 に答える 4

97

H2CO3 は正しいです。-std=c++11 で設定された CXXFLAGS でメイクファイルを使用できます。メイクファイルは、プログラムのコンパイル方法に関する指示を含む単純なテキスト ファイルです。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、およびビルド ディレクトリをサポートすることができます。

編集: デフォルトの C++ コンパイラを変更しました。私のバージョンの g++ は最新ではありません。clang++ では、この makefile は正常に動作します。

于 2013-06-02T19:57:33.220 に答える
7

specsファイルを使用してそれを行うことができると思います。


MinGW では、 gcc -dumpspecs > specを実行できます

それが言うところ

*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/ のいずれかです。

于 2015-12-30T17:11:50.373 に答える