【问题标题】:How can I set a constant in autoconf checking for a program?如何在 autoconf 检查程序中设置常量?
【发布时间】:2015-07-19 20:14:06
【问题描述】:

我正在使用自动工具,并且我有一个 configure.ac 脚本,上面写着:

AC_CHECK_PROG(RASPIVID, raspivid, yes)

但是,生成的 config.h 文件不显示 RASPIVID 常量。我做错了吗?

【问题讨论】:

    标签: constants autotools autoconf


    【解决方案1】:

    AC_CHECK_PROG 宏本身不会对 config.h 做任何事情。来自the manual

    AC_CHECK_PROG变量prog-to-check-forvalue-if-found,[ value-if-not-found], [path = '$PATH'], [reject])

    检查路径中是否存在程序prog-to-check-for。如果找到,则将 variable 设置为 value-if-found,否则设置为 value-if-not-found(如果给定)。始终忽略 reject(绝对文件名),即使它是在搜索路径中找到的第一个;在这种情况下,使用 prog-to-check-for 发现的不是 reject 的绝对文件名设置 variable。如果 variable 已经设置好了,什么也不做。为变量调用AC_SUBST。此测试的结果可以通过设置variable 变量或缓存变量ac_cv_prog_variable 来覆盖。

    所以AC_CHECK_PROG(RASPIVID, raspivid, yes) 会检查raspivid 是否存在。如果是,它会将 shell 变量 RASPIVID 设置为值 yes,因此您可以在 AC_CHECK_PROG 调用之后执行测试,例如:

    AC_CHECK_PROG([RASPIVID], [raspivid], [yes])
    AS_IF([test "x$RASPIVID" = xyes],
        [AC_DEFINE([HAVE_RASPIVID], [1], [raspivid is available.])])
    

    AC_SUBST 将如文档中所述被调用,因此您可以在 makefile 或任何输出文件中使用 $(RASPIVID)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多