You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile指定依赖忽略自动规则:如何让p5不触发*.py默认规则?

解决方法:阻止Make为p5.py触发模式规则

有几种可靠的方式可以实现你的需求,你可以根据实际场景选择:

1. 为p5.py添加空的明确规则

如果p5.py是已经存在的文件,或者你不需要Make帮你构建它,直接给它写一个空规则。Make会优先使用明确规则而非模式规则,这样就不会触发%.py的构建逻辑:

# 明确声明p5.py的规则,什么都不做(@#是静默注释,避免Make输出冗余信息)
p5.py:
	@# 空命令,标记p5.py无需构建

保留你原有的规则(顺便修正了原规则里的依赖笔误,${SRCDIR}/$^会展开成无效路径,建议明确指定依赖文件):

p5: p5.py ${SRCDIR}/p5.py
	# 这里添加p5目标的执行命令,比如spark-submit调用逻辑
%.py: clean spark-submit ${SRCDIR}/$@ ${SPARK_OPTS}
	# 原有%.py模式规则的构建命令

当你运行make p5时,Make会直接使用这个空规则处理p5.py,不会触发模式规则。

2. 将p5.py标记为伪目标(适合非实际文件场景)

如果p5.py并不是一个实际存在的文件,只是作为依赖标记使用,可以把它声明为伪目标。伪目标的特点是Make不会检查对应文件的存在性,也不会尝试用模式规则构建它:

.PHONY: p5 p5.py

p5: p5.py ${SRCDIR}/p5.py
	# p5的执行命令
%.py: clean spark-submit ${SRCDIR}/$@ ${SPARK_OPTS}
	# 原有模式规则命令

这样Make会直接跳过p5.py的构建步骤,不会触发%.py规则。

3. 临时禁用模式规则(单次调用)

如果你只是偶尔需要运行p5而不触发%.py规则,可以在调用Make时加上-r选项,关闭所有内置模式规则(注意:这会同时关闭Make的其他内置规则,比如C语言编译规则等):

make -r p5

这个方法适合一次性需求,不需要修改Makefile。


内容的提问来源于stack exchange,提问作者Rorschach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:56:31