簡體   English   中英

在 Makefile 中鏈接構建目標並維護執行順序

[英]chaining build targets in Makefile and maintaining order of execution

我有一個 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 但是,Dockerfile 的實際 pre_build 和實際副本有效。 如果我刪除 post_build 部分,構建完成后我可以在目錄中看到 Dockerfile 。 我一直認為在鏈式 Makefile 目標中,順序保持不變。 但這看起來,在目標上隱式並行構建的順序發生了一些奇怪的事情。

我嘗試了多種強制秩序的方法,但沒有任何效果。

更新:我在 Mac 和 Linux 中嘗試過,同樣的行為

幾乎按照定義,並行構建沒有強制順序。 嘗試這個:

pre_build:
    ...

post_build: build_docker
    ...

build_docker: pre_build
    ...

build: post_build

編輯:

如果pre_buildpost_build在另一個 makefile 中定義,您可能不會更改,只需執行以下操作:

include Makefile.other

post_build: build_docker

build_docker: pre_build
    ...

build: post_build

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM