Как написать несколько условий в Makefile.am с помощью «else if» - PullRequest
50 голосов
/ 09 ноября 2011

Я хочу скомпилировать свой проект с помощью autoconf / automake.В моем файле configure.ac определены следующие 2 условия:

AM_CONDITIONAL(HAVE_CLIENT, test $enable-client -eq 1)
AM_CONDITIONAL(HAVE_SERVER, test $enable-server -eq 1)

Я хочу отделить _LIBS от этих двух условий в файле Makefile.am

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 НЕ работает.

Как написать 'else if' в makefile.am?

Ответы [ 5 ]

95 голосов
/ 26 июля 2012

код 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, но так как это лучший результат в Google, я добавляю его здесь, если это полезнокому-либо еще.

15 голосов
/ 09 ноября 2011

Я бы принял ответ ldav1s на вашем месте, но я просто хочу отметить, что «else if» можно записать в терминах «else's» и «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

(Отступы для ясности. Не делайте отступы, они не будут работать. )

10 голосов
/ 06 сентября 2012
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
5 голосов
/ 09 ноября 2011

Как вы обнаружили, вы не можете этого сделать.Вы можете сделать:

libtest_LIBS = 

...

if HAVE_CLIENT
libtest_LIBS += libclient.la
endif

if HAVE_SERVER
libtest_LIBS += libserver.la
endif
3 голосов
/ 12 октября 2013
ifdef $(HAVE_CLIENT)
libtest_LIBS = \
    $(top_builddir)/libclient.la
else
ifdef $(HAVE_SERVER)
libtest_LIBS = \
    $(top_builddir)/libserver.la
else
libtest_LIBS = 
endif
endif

ПРИМЕЧАНИЕ: НЕ делайте отступ, если он не работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...