用于拉取和构建项目的 Makefile

fak*_*ake 6 git conditional makefile

我正在构建一个需要项目生态系统(linux、qemu、uboot 等)的项目,其中大部分项目都在 git 存储库中。我曾经用脚本管理它们,但我发现自己实现了用 make 完成的更好的东西。所以我决定将我的脚本迁移到 makefile。

问题是我想克隆项目(如果不存在)并拉出(如果存在)。有没有办法做到这一点而不会重复我太多?

Eta*_*ner 4

我想这样的事情会起作用。它没有 make 来完成工作,因为如果不依赖于项目目录中的某些内容,我不确定您只能有条件地运行克隆。

force: ;

proj%: force
    @echo [ -d $@ ] || git clone srv:$@
    @cd $@ && git pull
Run Code Online (Sandbox Code Playgroud)

如果您想列出类似proj1/.git/config入口点先决条件的内容,您可以将克隆拆分为仅针对项目目录克隆的订单先决条件。尽管您仍然需要强制配置先决条件来强制拉动发生。

也许是这样的:

proj%:
    git clone srv:$@

proj%/.git/config: force | proj%
    git pull
Run Code Online (Sandbox Code Playgroud)

  • 你能解释一下吗?什么是force,什么是proj%,以及它是如何实现此目的的: git clone $GIT_URL $DIR 如果 $DIR 不存在并 cd $DIR; git pull 如果有的话。 (4认同)