makefile - make 继续运行规则
问题描述
下面的工作示例总是在touch fileA
每次运行make
. 我怎样才能阻止这个?
all: analysis.txt
analysis.txt: countries
touch $@
countries: usa.txt mexico.txt
$(countries): %.txt
%.txt:
echo "bash ./cityGenerator $*" > $@
解决方案
fileA
取决于workflowB
。所以只要workflowB
是过时的,fileA
就会过时,touch就会运行。
workflowB
,如此处所示,被标记.PHONY
,所以它总是被认为是过时的,所以fileA
总是会被重建。
即使不是.PHONY
,也没有规则可以创建一个名为的文件workflowB
,因此它仍然总是过时的。
至于如何阻止它,这完全取决于你没有告诉我们的这些事情做了什么,以及为什么你没有告诉我们你为什么要这样做workflowB
。
解决它的一种方法是删除.PHONY
并提供workflowB
一个涉及文件的配方,然后它将是最新的。:
workflowB: workflowB_files
touch $@
但是,当然,这可能会破坏这个目的(同样,你没有告诉我们)。
推荐阅读
- reactjs - Deconstruct props while adding props to it. - Is it possible?
- laravel - 未找到 Laravel 护照迁移
- imgur - Imgur申请注册链接无效?
- c# - “FromRoute”请求属性的驼峰式序列化
- sql - MS Access 2013 VBA - 目录路径中的句点(“.”)问题
- java - 如何扫描字符串中以逗号分隔的元素?
- css - VSCode:如何保留空行(在 scss 文件或其他文件中)?
- python - 将 Django 命令输出记录到 Apache 错误日志
- swift - 由于一种系统语言,NSLocalizedString 出现致命错误
- arrays - 重塑数组错误:*** IndexError:元组索引超出范围