Automated tests 向autotools项目添加其他制作/测试目标

Automated tests 向autotools项目添加其他制作/测试目标,automated-tests,autotools,automake,Automated Tests,Autotools,Automake,我们有一个autotools项目,它混合了单元测试和集成测试,所有测试都通过“检查”运行。这并不理想,因为一些集成测试需要一段时间,并且具有各种依赖关系(数据库等) 我想分离集成测试,并为它们分配自己的make目标。这样,单元测试仍然可以经常运行(通过make-check),并且集成测试可以根据需要以类似的方式运行 是否有一种简单(或其他)的方法来添加额外的make目标 注意:我可能还应该补充一点,这是一个大型项目,因此手工编辑/维护每个makefile是不可取的。如果可能的话,我想用“自动工具

我们有一个autotools项目,它混合了单元测试和集成测试,所有测试都通过“检查”运行。这并不理想,因为一些集成测试需要一段时间,并且具有各种依赖关系(数据库等)

我想分离集成测试,并为它们分配自己的make目标。这样,单元测试仍然可以经常运行(通过make-check),并且集成测试可以根据需要以类似的方式运行

是否有一种简单(或其他)的方法来添加额外的make目标

注意:我可能还应该补充一点,这是一个大型项目,因此手工编辑/维护每个makefile是不可取的。如果可能的话,我想用“自动工具”的方式

--更新1--

我尝试了一个解决方案,它离我们更近了一步,但还没有完全实现。我还有几个问题:

1) 递归-我可以修改构建树根目录中的makefile.am,以及包含测试的任何目录,但似乎应该有一种方法可以做到这一点,我不必更改层次结构中的每个makefile.am。(毕竟,检查目标是这样工作的)


2) .虚假-我不断收到关于.虚假被重新定义的消息。这是可以理解的,因为它是由另一个包(特别是doxygen)设置的。如何使这两种方法很好地结合在一起?

在am文件中,所有make语法都会传递到生成的Makefile中。因此,如果您想要一个新的目标,只需像在Makefile中一样创建它,它就会出现在自动生成的Makefile中。将以下内容放在am文件的底部

integration-tests: prerequisites.... commands to run test .PHONY: integration-tests 集成测试:先决条件。。。。 运行测试的命令 .PHONY:集成测试
由于没有更多的回应,我将用我的解决方案来回答

我通过完全消除递归解决了递归问题。使用 作为指导,我将整个项目从递归make切换到非递归make。然后,我将非递归检查相关目标(检查、检查am、检查测试等)克隆到一组新的集成测试目标中。到目前为止,这种方法非常有效

注意:您可能想知道为什么我不直接克隆递归目标。坦白说,我找不到他们。要么我不知道去哪里看(规则不在生成的Makefile中),要么是发生了一些隐式的事情,我对autotools的理解不够透彻,无法遵循它


至于.PHONY被重新定义的问题,除了在进行集成测试时有条件地排除另一个定义之外,我还没有找到解决方案。

什么是
做什么?@KarlRichter.PHONY意味着集成测试不是一个文件,而只是一个目标名称