首页 > 解决方案 > 模式规则与静态模式规则哪一个是有效的?

问题描述

我有一个疑问,如果我可以编写一个同时包含模式规则和静态模式规则的规则,哪个更好地写在另一个之上?
模式规则是否更快速高效?
如果静态模式规则中的静态目标列表过多,是否会降低性能?

标签: makefile

解决方案


显式规则总是比隐式规则更快。隐式规则包括模式规则和后缀规则。静态模式规则,尽管名称似乎暗示它们是模式规则,但实际上并非如此:它们是显式规则(make 在内部为静态模式规则中的每个扩展目标生成单独的显式规则)。

确实,您拥有的静态模式目标越多,make 将使用的内存就越多,理论上,模式规则将允许 make 匹配模式,然后在配方完成后释放与其关联的内存,这可能会导致内存使用率降低,但我认为它必须是一个很大的数字才能抵消匹配模式规则所需的额外处理。

与往常一样,唯一确定的方法是在您的环境中对其进行测试。

但我怀疑静态模式规则会更快。

但是,对我来说,更重要的是可读性和灵活性……make与编译器和链接器在构建中花费的时间相比,通常需要一点额外的时间。对于一些非常大和复杂的 makefile,这当然可能不是真的。


推荐阅读