Как написать несколько условий в 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)
Я хочу отделить _LIBS от этих 2 условий в 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?
Ответы
Ответ 1
Код 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, я добавляю его здесь, если он полезен кому-либо еще.
Ответ 2
Я бы принял ответ 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
(Отступ для ясности. Не отступайте от строк, они не будут работать.)
Ответ 3
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
Ответ 4
Как вы обнаружили, вы не можете этого сделать. Вы можете сделать:
libtest_LIBS =
...
if HAVE_CLIENT
libtest_LIBS += libclient.la
endif
if HAVE_SERVER
libtest_LIBS += libserver.la
endif
Ответ 5
ifdef $(HAVE_CLIENT)
libtest_LIBS = \
$(top_builddir)/libclient.la
else
ifdef $(HAVE_SERVER)
libtest_LIBS = \
$(top_builddir)/libserver.la
else
libtest_LIBS =
endif
endif
ПРИМЕЧАНИЕ: НЕ отступайте, если оно не работает!