如何在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 = 
万一
万一

注意:不要缩进,如果它不工作!