如何在Makefile.am中用“else if”写入多个条件
我想用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'?
ptomato的代码也可以用更简洁的方式写成:
ifeq($(TARGET_CPU),x86) TARGET_CPU_IS_X86:= 1 else ifeq($(TARGET_CPU),x86_64) TARGET_CPU_IS_X86:= 1 其他 TARGET_CPU_IS_X86:= 0 万一
这不回答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 其他 ifdef $(HAVE_SERVER) libtest_LIBS = \ $(top_builddir)/libserver.la 其他 libtest_LIBS = 万一 万一
注意:不要缩进,如果它不工作!