我正在为我们正在使用autotools的软件包(即autoconf / automake)编写回归测试。以下Makefile.am举例说明了最简单的检查。当调用make check时,它会编译tester.c以生成测试器,然后启动tester.sh,最终调用test(以及其他命令)。这很好。
但是,对于某些测试,我需要将在配置时收集的一些信息传递给tester.sh。那么可以将这些信息作为参数传递吗?该值在Makefile中的变量中可用(即它是AC_SUBSTed),但这些变量不会转发到make命令生成的子进程。如果那不可能,那么在tester.sh之前执行一个额外的规则是否可行,生成一个带有稍后通过tester.sh捕获的参数的文件?
文件 Makefile.am
check_PROGRAMS = tester
TESTS = tester.sh
tester_SOURCES = tester.c
答案 0 :(得分:0)
由于我对将其中一个Makefile变量传递给测试感兴趣,因此我决定通过创建一个辅助程序(名为pass_variable_PREFIX)来解决此问题,该程序将显示Makefile中定义的前缀变量。这个辅助程序稍后将由tester.sh用来知道前缀的值。我知道这可能不是最好的解决方案,但它到目前为止都有效。
以下是相关代码:
<强> Makefile.am 强>
check_PROGRAMS = tester pass_variable_PREFIX
TESTS = tester.sh
tester_SOURCES = tester.c
pass_variable_PREFIX_SOURCES = pass_variable_PREFIX.c
pass_variable_PREFIX_CFLAGS = -DPREFIX="\"$(prefix)\""
<强> pass_variable_PREFIX.c 强>
#include <stdio.h>
int main (int argc, char *argv[])
{
printf (PREFIX"\n");
return 0;
}
<强> tester.sh 强>
#!/bin/bash
PREFIX=`./pass_variable_PREFIX`
echo $PREFIX
./tester