web-dev-qa-db-fra.com

Comment écrire plusieurs conditions dans Makefile.am avec "else if"

Je veux compiler mon projet avec autoconf/automake. Il y a 2 conditions définies dans mon configure.ac

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

Je veux séparer _LIBS de ces 2 conditions dans 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

mais else if HAVE_SERVER ne marche pas.

Comment écrire 'else if' dans makefile.am?

51
Wind

le code de ptomato peut également être écrit de manière plus propre, comme:

 ifeq ($ (TARGET_CPU), x86) 
 TARGET_CPU_IS_X86: = 1 
 sinon ifeq ($ (TARGET_CPU), x86_64) 
 TARGET_CPU_X86: 1. .] else 
 TARGET_CPU_IS_X86: = 0 
 endif 

Cela ne répond pas à la question de OP, mais comme c'est le meilleur résultat sur Google, je l'ajoute ici au cas où il serait utile à quelqu'un d'autre.

99
R.D.

J'accepterais la réponse de ldav1s si j'étais vous, mais je tiens simplement à souligner que "else if" peut être écrit en termes de "else et" si dans n'importe quelle langue:

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

(L’indentation a pour but de clarifier. Ne pas indenter les lignes, elles ne fonctionneront pas.)

15
ptomato
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
10
don

Comme vous l'avez découvert, vous ne pouvez pas faire ça. Tu peux faire:

libtest_LIBS = 

...

if HAVE_CLIENT
libtest_LIBS += libclient.la
endif

if HAVE_SERVER
libtest_LIBS += libserver.la
endif
5
ldav1s
 ifdef $ (HAVE_CLIENT) 
 libtest_LIBS =\
 $ (top_builddir) /libclient.la 
 else 
 ifdef $ (HAVE_SERVER) 
 libtest_LIBS =\
 $ (top_builddir) /libserver.la 
 sinon 
 libtest_LIBS = 
 endif 
 endif 

NOTE: NE PAS indenter le si alors ça ne marche pas!

3
dkjkj