我们有一个 autotools 项目,它混合了单元和集成测试,所有这些都通过“make check”运行。这并不理想,因为一些集成测试需要一段时间,并且具有各种依赖项(数据库等)
我想分离集成测试并为它们分配自己的 make 目标。这样,单元测试仍然可以经常运行(通过 make check),并且集成测试可以根据需要以类似的方式运行。
是否有一种直接(或以其他方式)添加额外 make 目标的方法?
注意:我可能还应该补充一点,这是一个大型项目,因此手动编辑/维护每个 makefile 是不可取的。如果可能的话,我想用“自动工具方式”来做。
-- 更新 1 --
我尝试过 Jon的解决方案,它更近了一步,但还没有完全到位。我还有几个问题:
1)递归 - 我可以修改构建树根目录中的 makefile.am 以及包含测试的任何目录,但似乎应该有一种方法可以在我没有的地方执行此操作更改层次结构中的每个 Makefile.am。 (毕竟检查目标是这样工作的)
2) .PHONY - 我不断收到有关 .PHONY 被重新定义的消息。这是可以理解的,因为它是由另一个包(特别是 doxygen)设置的。怎样才能让两个人玩得很好?
最佳答案
在您的 am 文件中,所有 make 语法都传递到生成的 Makefile 中。因此,如果您想要一个新目标,只需像在 Makefile 中一样创建它,它就会出现在自动生成的 Makefile 中。将以下内容放在 am 文件的底部。
集成测试:先决条件....
运行测试的命令
.PHONY:集成测试
关于automated-tests - 向 autotools 项目添加额外的 make/test 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1500039/