2016-11-16 7 views
1

私はautotoolsを使って構築するように設定されたコードを継承しましたが、私はいつもCMakeを使用してきました。 C++ソースの中には、C++ 11およびC++ 14標準を使用するものがあります。しかし、ときに私はC++ソースファイルの一部が-std=c++14フラグ付きで構築されているautotools(automake、configureなど)を使用してファイルのビルドルールを設定するにはどうすればよいですか?

CXXFLAGS="$CXXFLAGS -std=c++14" ./configure 
make 

を実行します。これは単純なMakefileをしたと私はfoo.ccが正しいフラグで構築されていなかったことに気づいた場合、私は

foo.o: foo.cc foo.h 
    $(CXX) $(CXXFLAGS) -c foo.c 

foo.o: foo.cc foo.h 
    $(CXX) -c foo.c 

を変更することになりますautotoolsの中に、このアナログはありますか?私はconfigure.acMakefile.amをチェックしましたが、解決策が見つかりませんでした。

+0

実際に 'Makefile.am'にfoo.oルールがありますか? automakeはあなた自身でそれをするので、何もないはずです。 –

答えて

1

設定を呼び出すときにCXXFLAGSと設定すると、うまくいきます。しかし、しばしばMakefile.amの作者は、AM_CXXFLAGSを設定するのではなく、あなたの設定を上書きするmakefileの中にCXXFLAGSを設定するのを間違えます。それがここに当てはまるかもしれません。

いずれの場合でも、プログラムにC++ 14が必要な場合は、おそらくAX_CXX_COMPILE_STDCXX([14])マクロをチェックアウトし、フラグを設定するのではなくconfigure.acに入れてください。 CXXFLAGSはすでにあなたの代わりにこのようにconfigureスクリプトを実行する必要があり、別の-std=...で定義されている場合には

0

AM_CXXFLAGSCXXFLAGSの違いについて右@ptomatoであることを

./configure CXXFLAGS=" -std=c++14"

注意。

関連する問題