1つの定義に基づいて2つの異なるアプリケーションを生成できるプロジェクトが1つあります。
libfoo_la_CXXFLAGS = -DMYDEFINE
この定義を設定するには、Makefile.amを変更する必要があるため、自動ではありません。
configureコマンドを使用してこの定義を設定できますか?autotoolsを使用して1つの定義を設定する他の方法はありますか?
ファイルを編集する必要が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