2012-08-10 18 views
21

私はAX_CXX_COMPILE_STDCXX_0X(autoconf-archiveを見ることができます)を使用して、コンパイラのC++ 11機能をチェックします。 -std=c++0xが必要であると正しく判断しますが、CXXFLAGSには追加しません。私はマクロソースを見て、それは実際にチェックした後、以前のフラグを復元します。C++用の自動ツールチェック11

CXXFLAGSをC++ 11ソースをコンパイルできるように設定するにはどうすればよいですか?

-std=c++0xAM_CXXFLAGSを追加するだけでいいのは、コンパイラをC++ 11モードでコンパイルする負担をautoconfの開発者ではなく私には負わせたいからです。

答えて

28

AX_CXX_COMPILE_STDCXX_11autoconf-archiveの一部として、お探しのものが既に作成されています。環境に必要なオプション(以前はCXXFLAGS、現在はCXX)が追加され、C++ 11サポートが利用できない場合はエラーが出力されます。

+0

'configure.ac:15:エラー:AC_LANG_ASSERT:C ../../lib/autoconf/lang.m4:156:現在の言語はC++ではありませんAC_LANG_ASSERTは... M4/ax_cxx_compile_stdcxx_11から展開されます。configure.ac:15:トップレベル autom4te:/ usr/bin/m4が終了ステータスで失敗しました: aclocal:エラー:終了時に/ usr/bin/autom4teが失敗しました。ステータス:1 autoreconf:aclocalが終了ステータス1で失敗しました。 ' 'AC_PROG_CXX'の直後に置きます。私は間違っている? – KAction

+0

長いコメントを残して申し訳ありません。私はそれをフォーマットする方法を見つけませんでした。さて、 'AX_CXX_COMPILE_STDCXX_11'の直前に' AC_LANG([C++]) 'を追加しましたが、' AC_PROG_CXX'によって呼び出されたと仮定しました。 – KAction

+1

@illusionoflife 'AC_PROG_CXX'は、CとC++の両方のチェックを持つconfigureスクリプトを混乱させるので、そうしてはいけません。ほとんどのautoconfのチェックはCに依存しています。あなたがしているようにAC_LANGを追加するのは正しいことです。 – hvd