将参数传递给 automake 中的回归测试
Passing parameters to regression tests in automake
我正在为我们当前使用 autotools 的包(即 autoconf/automake)编写回归测试。下面的 Makefile.am 举例说明了最简单的检查。调用 make check 时,它会编译 tester.c 以生成测试器,然后启动 tester.sh 最终调用测试(以及其他命令)。效果不错。
但是,对于某些测试,我需要将配置时收集的一些信息传递给 tester.sh。那么是否可以将此信息作为参数传递?该值在 Makefile 的变量中可用(即 AC_SUBSTed),但这些变量不会转发给 make 命令生成的子进程。如果那不可能,那么在 tester.sh 之前执行一个额外的规则是否可行,该规则生成一个文件,其中包含稍后通过 tester.sh 捕获的参数?
文件Makefile.am
check_PROGRAMS = tester
TESTS = tester.sh
tester_SOURCES = tester.c
因为我有兴趣将 Makefile 变量之一传递到测试中,所以我决定通过创建一个辅助程序(名为 pass_variable_PREFIX)来解决这个问题,该程序将显示在生成文件。 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
我正在为我们当前使用 autotools 的包(即 autoconf/automake)编写回归测试。下面的 Makefile.am 举例说明了最简单的检查。调用 make check 时,它会编译 tester.c 以生成测试器,然后启动 tester.sh 最终调用测试(以及其他命令)。效果不错。
但是,对于某些测试,我需要将配置时收集的一些信息传递给 tester.sh。那么是否可以将此信息作为参数传递?该值在 Makefile 的变量中可用(即 AC_SUBSTed),但这些变量不会转发给 make 命令生成的子进程。如果那不可能,那么在 tester.sh 之前执行一个额外的规则是否可行,该规则生成一个文件,其中包含稍后通过 tester.sh 捕获的参数?
文件Makefile.am
check_PROGRAMS = tester
TESTS = tester.sh
tester_SOURCES = tester.c
因为我有兴趣将 Makefile 变量之一传递到测试中,所以我决定通过创建一个辅助程序(名为 pass_variable_PREFIX)来解决这个问题,该程序将显示在生成文件。 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