我正在使用autotools,我有一个configure.ac脚本,上面写着:
AC_CHECK_PROG(RASPIVID, raspivid, yes)
但是,生成的config.h文件未显示RASPIVID常量。我做错了吗?
答案 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)
或输出文件可能是什么。