【问题标题】:Preferred Way for Testing External Tools in a Makefile在 Makefile 中测试外部工具的首选方法
【发布时间】:2013-08-05 23:13:35
【问题描述】:

摆弄一个主要基于纯 Makefile 的构建系统,我来到了以下宏,以便于测试是否存在并设置构建过程所需的每个外部工具的内部变量。

define tool-available
    $(eval $(1) := $(shell which $(2)))
    $(if $($(1)),$(info $(2) available at $($(1))),$(error error: missing tool $(2)))
endef

$(eval $(call tool-available,DOT,dot))
$(eval $(call tool-available,RBIN,R))
$(eval $(call tool-available,FIND,find))

但是,经验表明,在 makefile 中这样做并不常见,第三方构建系统通常更喜欢外部配置脚本和替代机制。

除了 which(1) 程序在平台上的可用性有限这一事实之外,还有什么强烈的理由不将其放入 Makefile 中?

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    我不完全确定明确检查该工具在您的系统中是否可用有任何价值;如果您的路径上不存在该程序,它将失败并出现“找不到命令”错误,这是非常明确的,那么为什么要浪费时间显式检查它呢?

    另一方面,我觉得检查库的存在确实增加了价值。如果缺少某个库,您可能只会得到一个“找不到文件”,而没有指明它来自 哪个 库,但即便如此,关于如何配置构建环境的清晰文档将是更好的;实际上,说“这就是构建它所需要的”比尝试处理所有配置怪异的系统的边缘情况要容易得多。

    请注意,我的观点在这方面是相当激进的;如果有人没有智慧阅读自述文件或构建说明并适当地设置他们的环境,那么他们可能一开始就没有商业尝试构建它......不那么愤世嫉俗的人自然可能想采取更温和的路线:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多