如何在程序的autoconf检查中设置常量?

时间:2015-07-19 20:14:07

标签: constants autotools autoconf

我正在使用autotools,我有一个configure.ac脚本,上面写着:

AC_CHECK_PROG(RASPIVID, raspivid, yes)

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

1 个答案:

答案 0 :(得分:3)

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

  

AC_CHECK_PROG 变量 prog-to-check-for value-if-found ,[ value-if-not-found ],[路径 ='$ PATH'],[拒绝])

     

检查路径中是否存在程序 prog-to-check-for 。如果找到,请将变量设置为 value-if-found ,否则设置为 value-if-not-found (如果给定)。始终传递拒绝(绝对文件名),即使它是在搜索路径中找到的第一个;在这种情况下,使用 prog-to-check-for 的绝对文件名设置变量,该文件名不是拒绝。如果已设置变量,则不执行任何操作。为变量调用 AC_SUBST 。可以通过设置变量变量或缓存变量ac_cv_prog_ 变量来覆盖此测试的结果。

因此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)或输出文件可能是什么。