我正在寻找一种方法来对./configure
的输出进行着色,以便检查结束时yes
的所有实例都以一种颜色显示,no
显示在另一种颜色中。我认为可能有一种方法是使用AS_IF
来创建回显消息来测试检查结果,然后使用通常的bash颜色命令设置输出。如果已经完成,我显然更愿意不花时间去做这件事。
答案 0 :(得分:1)
幸运的是,Autoconf基本上是一个巨大的C预处理器滥用,所以它的内部构件都暴露在外,很容易做一些hacky,公平的警告,可能不会从一个Autoconf版本延续到下一个版本。
getBaseContext
的定义(打印大部分是/否消息)可以在AC_MSG_RESULT
中找到,并且非常简单地定义为将给定消息打印到日志文件以及终端:
/usr/share/autoconf/autoconf/general.m4
由于调用了该宏的Autoconf内部接触到了你的configure.ac,你可以用你自己的宏调用它来覆盖m4_define([AC_MSG_RESULT],
[{ _AS_ECHO_LOG([result: $1])
_AS_ECHO([$1]); }dnl
])
。这是一个适合我的,绿色打印“是”,红色打印“否”,其他所有打印为蓝色。在configure.ac中的任何其他宏调用之前包括它:
AC_MSG_RESULT
但严重的是,不要这样做。
答案 1 :(得分:0)
这可能是一个愚蠢的问题。我为包检查写了一个:
AC_DEFUN([COLOR_PKG_CHECK],[
red=$(tput setaf 1)
grn=$(tput setaf 2)
clr=$(tput sgr0)
PKG_CHECK_EXISTS([$1],[$2],[found=yes],[found=no])
AS_IF([test "x$found" = "xyes"],[
msg="checking for $1... ${grn}yes${clr}"
AC_MSG_RESULT($msg)
$3
],[
msg="checking for $1... ${red}no${clr}"
AC_MSG_RESULT($msg)
$4
])
])
这有效但有点指出,这样做的唯一方法是以相同的方式包装任何感兴趣的调用。我不想那样做。