c – Makefile.am中的ifdef
作者:互联网
我想使用标志来编译我的C项目:
在configure.ac中我定义默认模型
AC_ARG_ENABLE(model, [AS_HELP_STRING([--enable-model],
[specify which Model will be used; (default --enable-model=98]))],,
[AC_DEFINE(MODEL_98)])
AS_IF([test "x$enable_model" = "x98"], [AC_DEFINE(MODEL_98)])
AS_IF([test "x$enable_model" = "x181"], [AC_DEFINE(MODEL_181)])
然后在Makefile.am中我使用这些变量如下:
proj_SOURCES = \
../bac.c \
../conf.c \
../cw.c \
ifdef $(MODEL_98)
proj_SOURCES += \
../dm/98/interfaces.c \
../dm/98/device.c \
../dm/98/ging.c \
../dm/98/wa.c
endif
ifdef $(MODEL_181)
proj_SOURCES += \
../dm/181/fi.c
endif
但是项目没编译!!
我的Makefile.am有什么问题
谢谢
解决方法:
要在Makefile中使用变量,您需要使用automake版本,即AM_ *而不是AC_.
我将使用AM_CONDITIONAL
.为您的例子:
在configure.ac中:
AC_ARG_ENABLE([model],
[AS_HELP_STRING([--enable-model],
[specify which Model will be used; (default --enable-model=98]))],
[enable_model=$enableval],
[enable_model=98])
AM_CONDITIONAL([MODEL_98], [test "x$enable_model" = "x98"])
AM_CONDITIONAL([MODEL_181], [test "x$enable_model" = "x181"])
这意味着我们可以调用configure来启用模型98
> ./configure
> ./configure –enable-model = 98
然后,您也可以通过调用configure as ./configure –enable-model = 181来启用181.或者就此而言任何型号,因为我们将enable_model设置为传入的值.
然后在你的Makefile.am中:
proj_SOURCES = \
../bac.c \
../conf.c \
../cw.c \
if MODEL_98
proj_SOURCES += \
../dm/98/interfaces.c \
../dm/98/device.c \
../dm/98/ging.c \
../dm/98/wa.c
endif
if MODEL_181
proj_SOURCES += \
../dm/181/fi.c
endif
注意使用if而不是ifdef以及MODEL_98周围缺少引用.
标签:c-3,c,makefile,autotools 来源: https://codeday.me/bug/20190829/1759700.html