web-dev-qa-db-ja.com

「else if」を使用してMakefile.amに複数の条件を書き込む方法

Autoconf/automakeでプロジェクトをコンパイルしたい。 configure.acには2つの条件が定義されています

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

Makefile.amでこれら2つの条件から_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」を書く方法は?

51
Wind

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の質問には答えませんが、それはグーグルでの最高の結果であるため、他の誰かに役立つ場合に備えてここに追加します。

99
R.D.

私があなたなら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

(インデントは明確にするためです。行をインデントしないでください。動作しません。

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

あなたが発見したように、あなたはそれをすることはできません。できるよ:

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 
 else 
 libtest_LIBS = 
 endif 
 endif 

注:機能しない場合はインデントしないでください!

3
dkjkj