我想用autoconf / automake编译我的项目。我的configure.ac
中定义了两个条件AM_CONDITIONAL(HAVE_CLIENT, test $enable-client -eq 1)
AM_CONDITIONAL(HAVE_SERVER, test $enable-server -eq 1)
我想在Makefile.am
中将_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'?
答案 0 :(得分:93)
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的问题,但由于这是谷歌的最佳结果,我在这里添加它,以防它对其他人有用。
答案 1 :(得分:15)
如果我是你,我会接受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
(缩进是为了清晰。不要缩进行,它们将无效。)
答案 2 :(得分:10)
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
答案 3 :(得分:5)
正如您所发现的那样,您无法做到这一点。你可以这样做:
libtest_LIBS =
...
if HAVE_CLIENT
libtest_LIBS += libclient.la
endif
if HAVE_SERVER
libtest_LIBS += libserver.la
endif
答案 4 :(得分:3)
ifdef $(HAVE_CLIENT) libtest_LIBS = \ $(top_builddir)/libclient.la else ifdef $(HAVE_SERVER) libtest_LIBS = \ $(top_builddir)/libserver.la else libtest_LIBS = endif endif
注意:如果它不起作用,请不要缩进!