如何在autotools配置中检查shell CMD的返回值



我想在配置过程中运行shell命令-如果此操作的返回值为0,我想使用它。否则,我希望退出并显示错误消息。

我写了这样的东西:

LOC=$(perl -MExtUtils::Embed -e perl_inc | sed 's/[ t]*-I//')
RC=$?
AS_IF([ test $RC != 0 ], [AC_MSG_ERROR([Can't find module MExtUtils::Embed in perl. Try installing perl 5.8.8 or above])],)

这行不通。RC总是得到值0,即使命令失败。

有谁知道怎么做对吗?

谢谢

问题是您的管道总是成功的,因为无论perl做什么,sed都会成功。一种方法是简单地延迟sed的调用:

LOC=$( perl -MExtUtils::Embed -e perl_inc )
AS_IF([ test $? != 0 ], [AC_MSG_ERROR([...])])
LOC=$( echo "$LOC" | sed 's/[ t]*-I//' )

另一方面,看起来perl_inc是perl的命令,而不是文件名,所以简单地将sed的替换添加到perl中可能更容易。

第三,您可能应该使用AX_PROG_PERL_MODULES来查看是否安装了所需的模块。

相关内容

  • 没有找到相关文章

最新更新