How to write multiple conditions in Makefile.am with “else if”

前端 未结 5 513
隐瞒了意图╮
隐瞒了意图╮ 2021-02-02 05:29

I want to compile my project with autoconf/automake. There are 2 conditions defined in my configure.ac

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


        
相关标签:
5条回答
  • 2021-02-02 05:38
    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
    
    0 讨论(0)
  • 2021-02-02 05:55

    ptomato's code can also be written in a cleaner manner like:

    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
    

    This doesn't answer OP's question but as it's the top result on google, I'm adding it here in case it's useful to anyone else.

    0 讨论(0)
  • 2021-02-02 05:55

    As you've discovered, you can't do that. You can do:

    libtest_LIBS = 
    

    ...

    if HAVE_CLIENT
    libtest_LIBS += libclient.la
    endif
    
    if HAVE_SERVER
    libtest_LIBS += libserver.la
    endif
    
    0 讨论(0)
  • 2021-02-02 06:00

    I would accept ldav1s' answer if I were you, but I just want to point out that 'else if' can be written in terms of 'else's and 'if's in any language:

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

    (The indentation is for clarity. Don't indent the lines, they won't work.)

    0 讨论(0)
  • 2021-02-02 06:04
    ifdef $(HAVE_CLIENT)
    libtest_LIBS = \
        $(top_builddir)/libclient.la
    else
    ifdef $(HAVE_SERVER)
    libtest_LIBS = \
        $(top_builddir)/libserver.la
    else
    libtest_LIBS = 
    endif
    endif
    

    NOTE: DO NOT indent the if then it don't work!

    0 讨论(0)
提交回复
热议问题