Autoconf/automakeでプロジェクトをコンパイルしたい。 configure.acには2つの条件が定義されています
AM_CONDITIONAL(HAVE_CLIENT, test $enable-client -eq 1)
AM_CONDITIONAL(HAVE_SERVER, test $enable-server -eq 1)
Makefile.amでこれら2つの条件から_LIBSを分離したい
if HAVE_CLIENT
libtest_LIBS = \
$(top_builddir)/libclient.la
else if HAVE_SERVER
libtest_LIBS = \
$(top_builddir)/libserver.la
else
libtest_LIBS =
endif
しかし、else if HAVE_SERVER
動作しません。
Makefile.amで「else if」を書く方法は?
ptomatoのコードは、次のような簡潔な方法で記述することもできます。
ifeq($(TARGET_CPU)、x86) TARGET_CPU_IS_X86:= 1 else ifeq($(TARGET_CPU)、x86_64) TARGET_CPU_IS_X86:= 1 else TARGET_CPU_IS_X86:= 0 endif
これはOPの質問には答えませんが、それはグーグルでの最高の結果であるため、他の誰かに役立つ場合に備えてここに追加します。
私があなたならldav1sの答えを受け入れますが、「else if」は「else」と「if」のいずれの言語でも書くことができることを指摘したいだけです。
if HAVE_CLIENT
libtest_LIBS = $(top_builddir)/libclient.la
else
if HAVE_SERVER
libtest_LIBS = $(top_builddir)/libserver.la
else
libtest_LIBS =
endif
endif
(インデントは明確にするためです。行をインデントしないでください。動作しません。)
ifeq ($(CHIPSET),8960)
BLD_ENV_BUILD_ID="8960"
else ifeq ($(CHIPSET),8930)
BLD_ENV_BUILD_ID="8930"
else ifeq ($(CHIPSET),8064)
BLD_ENV_BUILD_ID="8064"
else ifeq ($(CHIPSET), 9x15)
BLD_ENV_BUILD_ID="9615"
else
BLD_ENV_BUILD_ID=
endif
あなたが発見したように、あなたはそれをすることはできません。できるよ:
libtest_LIBS =
...
if HAVE_CLIENT
libtest_LIBS += libclient.la
endif
if HAVE_SERVER
libtest_LIBS += libserver.la
endif
ifdef $(HAVE_CLIENT) libtest_LIBS =\ $(top_builddir)/libclient.la else ifdef $(HAVE_SERVER) libtest_LIBS =\ $(top_builddir)/libserver.la else libtest_LIBS = endif endif
注:機能しない場合はインデントしないでください!