gpt4 book ai didi

c++ - Makefile.am 中的 ifdef

转载 作者:太空狗 更新时间:2023-10-29 20:37:08 25 4
gpt4 key购买 nike

我想使用标志来编译我的 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"])

这意味着我们可以调用配置来启用模型 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++ - Makefile.am 中的 ifdef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35872256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com