automake

automake - autoconf



Cómo escribir múltiples condiciones en Makefile.am con "else if" (5)

Quiero compilar mi proyecto con autoconf / automake. Hay 2 condiciones definidas en mi configure.ac

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

Quiero separar _LIBS de estas 2 condiciones en 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

pero else if HAVE_SERVER no, else if HAVE_SERVER no funciona.

¿Cómo escribir ''else if'' en makefile.am?


Aceptaría la respuesta de ldav1s si fuera usted, pero solo quiero señalar que ''else if'' puede escribirse en términos de ''else'' y ''if'' en cualquier idioma:

if HAVE_CLIENT libtest_LIBS = $(top_builddir)/libclient.la else if HAVE_SERVER libtest_LIBS = $(top_builddir)/libserver.la else libtest_LIBS = endif endif

(La sangría es para mayor claridad. No sangre las líneas, no funcionarán ) .


Como has descubierto, no puedes hacer eso. Tu puedes hacer:

libtest_LIBS =

...

if HAVE_CLIENT libtest_LIBS += libclient.la endif if HAVE_SERVER libtest_LIBS += libserver.la endif


El código de ptomato también se puede escribir de una manera más limpia como:

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

Esto no responde a la pregunta de OP, pero como es el resultado principal en google, lo estoy agregando aquí en caso de que sea útil para alguien más.


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


ifdef $(HAVE_CLIENT) libtest_LIBS = / $(top_builddir)/libclient.la else ifdef $(HAVE_SERVER) libtest_LIBS = / $(top_builddir)/libserver.la else libtest_LIBS = endif endif

NOTA: NO sangrar el si entonces no funciona!