我想用autoconf/automake编译我的项目.我的configure.ac中定义了2个条件
AM_CONDITIONAL(HAVE_CLIENT, test $enable-client -eq 1)
AM_CONDITIONAL(HAVE_SERVER, test $enable-server -eq 1)
Run Code Online (Sandbox Code Playgroud)
我想在Makefile.am中将_LIBS与这两个条件分开
if HAVE_CLIENT
libtest_LIBS = \
$(top_builddir)/libclient.la
else if HAVE_SERVER
libtest_LIBS = \
$(top_builddir)/libserver.la
else
libtest_LIBS =
endif
Run Code Online (Sandbox Code Playgroud)
但else if HAVE_SERVER不起作用.
如何在makefile.am中写'else if'?
R.D*_*.D. 103
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的问题,但由于这是谷歌的最高结果,我在这里添加它,以防它对其他人有用.
pto*_*ato 15
如果我是你,我会接受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
Run Code Online (Sandbox Code Playgroud)
(缩进是为了清楚.不要缩进线条,它们将无法工作.)
小智 10
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
Run Code Online (Sandbox Code Playgroud)
正如你所发现的,你不能这样做.你可以做:
libtest_LIBS =
Run Code Online (Sandbox Code Playgroud)
...
if HAVE_CLIENT
libtest_LIBS += libclient.la
endif
if HAVE_SERVER
libtest_LIBS += libserver.la
endif
Run Code Online (Sandbox Code Playgroud)
小智 5
ifdef $(HAVE_CLIENT)
libtest_LIBS = \
$(top_builddir)/libclient.la
别的
ifdef $(HAVE_SERVER)
libtest_LIBS = \
$(top_builddir)/libserver.la
别的
libtest_LIBS =
万一
万一
注意:不要缩进 if then 它不起作用!
| 归档时间: |
|
| 查看次数: |
113842 次 |
| 最近记录: |