GNU Make中是否可以在一个job内调用执行另一个job?
Makefile 目标内调用其他目标的实现方法
你需要的在一个任务执行过程中调用另一个任务的需求可通过以下两种常用方案实现:
- 方案1:前置依赖声明(符合Make原生设计,最推荐)
将被调用的目标设置为当前目标的前置依赖,Make执行当前目标前会自动先跑完所有前置目标的命令,示例代码如下:
basic: echo "This is the basic job" sub-job: basic echo "And this is the sub-job"
该方案的优势是天然支持Make的增量逻辑:如果basic对应的输出文件没有更新,不会重复执行该目标的命令,适合绝大多数常规场景。
- 方案2:命令内递归调用make
如果你的场景需要在当前目标的命令执行到中间节点时才调用另一个目标,无法通过前置依赖实现,可直接在命令行中调用make命令执行指定目标,示例代码如下:
basic: echo "This is the basic job" sub-job: echo "sub-job 前序命令执行" make basic echo "And this is the sub-job"
注意:如果你的Makefile文件名不是默认的Makefile,需要在调用时加-f参数指定文件名,比如make -f 你的自定义文件名 basic;需要静默执行无多余日志的话可额外加-s参数。
内容的提问来源于stack exchange,提问作者user15745460
相关产品推荐
相关产品推荐

