2012-05-03 9 views
1

この質問に対するemsrの回答:How can I specify that I want C++0x in Makefile.am?は、私が持っている問題の解決策です。ありません、私は新しいものを持っている:追加のautotoolマクロはどこに置くのですか?

私はM4/check.m4にマクロ定義を入れて、それに応じて私のconfigure.acを変更:私はautoreconf -vを実行したときに

AC_INIT([CppSs], [0.1], [[email protected]]) 
m4_include([m4/check.m4]) 
LT_INIT 

AC_CONFIG_SRCDIR([src/main.cc]) 
AC_CONFIG_HEADERS([config.h]) 
AC_CONFIG_FILES([Makefile src/Makefile]) 
AC_CONFIG_MACRO_DIR([m4]) 

# Checks for programs. 
AC_PROG_CXX 
AC_PROG_CC 

# ... 

# Check for C++0x features 
AC_COMPILE_STDCXX_OX 
AC_HEADER_STDCXX_11 

AC_OUTPUT 

は今、私は試してみました(これらのメッセージを取得-fivまた):

configure.ac:43: warning: AC_COMPILE_STDCXX_11 is m4_require'd but not m4_defun'd 
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from... 
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from... 
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from... m4/cppss. 
m4:90: AC_HEADER_STDCXX_11 is expanded from... 

は./configure利回り:

... 
./configure: line 16234: AC_COMPILE_STDCXX_OX: command not found 
./configure: line 16235: AC_COMPILE_STDCXX_11: command not found 
... 

私は何をしないのですか?

おかげで、ステファン

+0

質問にはタイプミスはありますか?あなたはm4_include([m4/check.m4])を書きますが、マクロ定義はm4/foo.m4に書かれています。 –

+0

@William Pursell:はい、指摘してくれてありがたいです。それを修正しました。 – steffen

答えて

1

は、私はそれはいくつかのタイプミス(0代わりのOと同様)とconfigure.acでマクロを置くために、ミスの混合物であった...それを自分で解決しました。また、私はそれがわずか数マクロをだならば、configure.acと同じディレクトリにacinclude.m4というファイルにそれらを入れて、

m4_include([m4/check.m4]) 

を取り除くために簡単だということ、が分かったとlibstdc++ manualでエラーが発生しましたC++ 11の機能がチェックされているページの一番下にある(少なくともgccでは)コンパイラオプション-std=c++11はありません。それは-std=c++0xでなければなりません。

乾杯、Steffen

+1

acinclude.m4を使用することはお勧めしません。 aclocalのドキュメントを参照してください。 –

+0

もう1つの方法は、aclocalが見えるディレクトリにマクロを置くことで、すべてのパッケージでマクロを利用できるようにすることです。 --print-ac-dirを使用してaclocalを呼び出して、どのディレクトリであるかを判断できます。また、aclocalのドキュメントで「dirlist」を探してください。 –

+0

@WilliamPursell:アドバイスをいただきありがとうございます。私はソフトウェアと一緒にテストを配布したいので、マクロをm4/check.m4に入れて、このファイルをac_includeすることにしました。 – steffen