2015-11-04 80 views
1

我正在为我们的包使用autotools(即autoconf/automake)编写回归测试。以下Makefile.am例举了最简单的检查。当调用make check时,它将编译tester.c生成测试器,然后启动结束调用测试(其他命令)的tester.sh。这工作正常。将参数传递给automake中的回归测试

但是,对于某些测试,我需要将配置时收集的一些信息传递给tester.sh。那么是否有可能将这些信息作为参数传递?该值在Makefile中的一个变量中可用(即,它是AC_SUBSTed),但这些变量不会转发给由make命令产生的子进程。如果这是不可能的,是否有可能在tester.sh之前执行一个额外的规则,并生成一个带有稍后通过tester.sh捕获的参数的文件?

文件Makefile.am

check_PROGRAMS = tester 
TESTS = tester.sh 
tester_SOURCES = tester.c 

回答

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