check-am 的基本原理取决于 all-am? (汽车制造商)

问题描述 投票:0回答:1

Automake生成Makefile时,检查依赖于所有:

check-am: all-am

这是什么原因?

我的猜测是,递归构建是必要的,因为不知道哪些测试取决于哪个目标,并且目标必须正确构建,否则测试结果将过时。但是,如果依赖项是已知的,无论是通过编译器的依赖项信息还是通过使用非递归构建,这种行为都很烦人,因为目标是构建的,并不是真正需要的。

makefile automake
1个回答
0
投票

Automake生成Makefile时,检查依赖于所有:

check-am: all-am

这是什么原因?

这里做出的一个基本假设是,当您运行测试时,您希望针对当前代码运行它们。

另一个合理的假设是测试套件的目标是尽可能完整地覆盖项目,或者至少这样做是合理的。

根据这些假设,并且不声称代表 Automake 开发人员的实际设计决策,至少有两个原因可以解释为什么

check-am
all-am
作为先决条件是有意义的:

  1. 如果您想运行整个测试套件,那么必须构建整个项目 - 既因为这就是您想要测试的内容,又因为如果您有任何构建失败,则该项目不处于合适的状态有待测试。

  2. 虽然测试可以构建为程序,但 Automake 对测试的支持预计它们通常会作为脚本实现。当它们是脚本时,没有好的方法来为它们执行自动依赖项生成。 Automake 无法可靠地生成运行每个测试的精确先决条件,但假设测试对项目具有良好的覆盖范围,那么这是一个简单而有效的解决方案,可以使测试套件的执行依赖于整个项目的最新状态。

© www.soinside.com 2019 - 2024. All rights reserved.