强大的c语言单元测试框架:Check

发表于:2010-5-19 17:09

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  Autotools 的机理和解决过程

  为什么出错以及为什么这么做就 OK 了呢?如果要说清楚,要了解 autoconf, automake, aclocal 等,即 autotools 的机理。

  可以参考一篇名为《autotools系列工具—-自动生成Makefile》的文章。

  下面是解决过程,其中饶了不少弯路

  * 在遇到这个问题时,首先想到的是生成新的 configure.ac 文件,取代示例中的 configure.ac 文件

$ autoscan
$ mv configure.scan configure.ac

  * 再执行 aclocal ,不再死锁,但是也没有任何新文件生成

$ aclocal

  * 比较新旧的 configure.ac ,发现当注释掉 AM_PATH_CHECK() 之后,便不再死锁

  * AM_PATH_CHECK 是什么呢?我们从 check 软件包的部署文件中,我们看到这个文件:

/usr/share/aclocal/check.m4

  * 我们打开这个文件(/usr/share/aclocal/check.m4),看到其中只包含了一个宏 AM_PATH_CHECK 的宏定义。而这个宏被标记为过时,建议使用 PKG_CHECK_MODULES 宏代替。看来在 autoconf 版本升级后,已经完全不能使用旧的宏语法了。

AC_DEFUN([AM_PATH_CHECK],
[
 AC_MSG_WARN([AM_PATH_CHECK() is deprecated])
 AC_MSG_WARN([[use PKG_CHECK_MODULES([CHECK], [check >= 0.9.4]) instead]])
 AC_ARG_WITH([check],
 [  --with-check=PATH       prefix where check is installed [default=auto]])

  * 将 AM_PATH_CHECK 的宏用 PKG_CHECK_MODULES 宏代替。diff如下:

--- a/configure.ac
+++ b/configure.ac
@@ -23,9 +23,7 @@ AC_PROG_LIBTOOL
 # This macro is defined in check.m4 and tests if check.h and
 # libcheck.a are installed in your system. It sets CHECK_CFLAGS and
 # CHECK_LIBS accordingly.
-#  AM_PATH_CHECK([MINIMUM-VERSION,
-#                [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
-AM_PATH_CHECK()
+PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号