在Makefile中链接构建目标并保持执行顺序

问题描述 投票:0回答:1

我有一个通过以下方式宽松定义的Makefile

pre_build:
    cp build/Dockerfile .

post_build:
    echo "complete"
    rm Dockerfile

build_docker:
    echo "do something with the Dockerfile"

build: pre_build build_docker post_build

但是我的构建始终失败,抱怨找不到Dockerfile。但是,实际的pre_build和Dockerfile的实际副本都可以工作。而且,如果我删除了post_build部分,则在构建完成后,我可以在目录中看到Dockerfile。我总是给人以印象,在链接的Makefile目标中,顺序保持不变。但这看起来像是在目标上隐式并行构建的顺序发生了一些奇怪的事情。

我尝试了多种方式下达命令,但没有任何效果。

upd:我在Mac和Linux中尝试过,行为相同

linux makefile build gnu-make
1个回答
0
投票

几乎根据定义,并行构建没有强制执行的顺序。试试这个:

pre_build:
    ...

post_build: build_docker
    ...

build_docker: pre-build
    ...

build: post_build
© www.soinside.com 2019 - 2024. All rights reserved.