每个源文件都有一个函数:
unsigned char test(){
//return true if tests succceed false otherwise
}
每次重新编译源文件时,我希望在执行可执行文件时运行该文件的测试函数,如果测试返回false则停止。但是,我只想要自构建以来未运行测试代码的代码。
我在想我可以使用makefile系统来帮助解决这个问题,因为makefile只会重新编译更改的代码,这正是我想要的。因此,我正在考虑在命令行参数中添加一些内容。我看到了一个示例,其中他们使用echo和date来添加上次修改的时间。代码会在成功执行测试代码时将上次修改的时间写入保存文件,并与下次进行比较。
有更好的方法吗?一个不依靠make?至少有没有办法不依赖于spefic unix命令?最后,即使这是不可能的,添加到文件的命令行会是什么样的。
答案 0 :(得分:2)
是的,你可以根据file.c制作一个file.t目标 file.t将根据测试的成功完成生成。
如果你将你的测试函数称为“main”并将其包装在#ifdef中会更容易:
#ifdef TEST
int main() {
if (test_something() == 1)
return 0;
else
return 1;
}
#endif
当然,如果你愿意,你可以做其他更棘手的事情。
示例Makefile(使用GNU Make语法)
all: foo.t
%.t: %.c
gcc -DTEST $< -o $@.tmp
if ./$@.tmp ; then echo "1" > $@; rm $@.tmp ; fi
然而!你可能最好采用像CUtest(http://cutest.sourceforge.net/)这样的东西。