16

1つの定義に基づいて2つの異なるアプリケーションを生成できるプロジェクトが1つあります。

libfoo_la_CXXFLAGS = -DMYDEFINE

この定義を設定するには、Makefile.amを変更する必要があるため、自動ではありません。

configureコマンドを使用してこの定義を設定できますか?autotoolsを使用して1つの定義を設定する他の方法はありますか?

4

2 に答える 2

13

ファイルを編集する必要がconfigure.acあり、その前AC_OUTPUT(ファイルの最後の部分) への呼び出しを追加しますAC_DEFINE

あなたのような単純なケースでは、次のもので十分です。

AC_DEFINE(MYDEFINE)

値を設定する場合は、次を使用します。

AC_DEFINE(MYDEFINE, 123)

これ-DMYDEFINE=123はフラグ ( DEFS =Makefile 内) に追加され、#define MYDEFINE 123それを使用する場合は生成された autoconf ヘッダーに追加されます。

ドキュメントを最初から読み、その例とチュートリアルに取り組むことをお勧めします。また、他のプロジェクトの構成ファイルをチェックして、さまざまな機能がどのように使用されているかを確認してください。

編集:コマンドラインでコマンドにフラグを渡したい場合は、次のmakeようにします。

libfoo_la_CXXFLAGS = $(MYFLAGS)

次に、次makeのように呼び出します。

$ make MYFLAGS="-DMYDEFINE"

MYFLAGSコマンドラインで設定しないと、メイクファイルでは未定義で空になります。

でターゲット固有CPPFLAGSを設定することもできMakefile.amます。この場合、ソース ファイルはフラグのセットごとに 1 回再コンパイルされます。

lib_LTLIBRARIES = libfoo.la libbar.la
libfoo_la_SOURCES = foo.c
libfoo_la_CPPFLAGS = -DFOO
libbar_la_SOURCES = foo.c
libbar_la_CPPFLAGS = -DBAR
于 2012-08-09T12:55:56.227 に答える