代码之家  ›  专栏  ›  技术社区  ›  tcurdt

根据构建矩阵构建目标

  •  1
  • tcurdt  · 技术社区  · 6 年前

    我要创建由指定的生成 BUILDS (基本上是一个扁平的构建矩阵)。创建目标是非常直接的-但是在目标内部,我需要解析路径来找出 OS ARCH . 一定有更好的办法。

    BUILDS=\
      darwin-amd64  \
      linux-386     \
      linux-amd64   \
      linux-arm     \
      linux-arm64   \
      windows-386   \
      windows-amd64 \
    
    DISTS=$(BUILDS:%=dist/$(NAME)-%-$(VERSION).tgz)
    
    dist:
      @mkdir -p dist
    
    $(DISTS): dist
      @echo "building: $@"
      @touch $@
    

    什么是访问 操作系统 拱门 $(DISTS) 目标?

    1 回复  |  直到 6 年前
        1
  •  2
  •   MadScientist    6 年前

    对此没有很好的答案。也不清楚你想做什么 OS ARCH ;如果您希望它们是makefile变量或shell变量,则会有所不同。

    以下是一个可能的解决方案:

    $(DISTS): OS = $(word 1,$(subst -, ,$*))
    $(DISTS): ARCH = $(word 2,$(subst -, ,$*))
    
    $(DISTS): dist/$(NAME)-%-$(VERSION).tgz: dist
            @echo "building: $@"
            @echo "OS = $(OS)"
            @echo "ARCH = $(ARCH)"
            @touch $@
    

    (未测试)。基本上,这使用一个静态模式规则,允许make设置 $* 与模式匹配的目标部分的自动变量。然后,我们使用目标特定的变量特性来设置 操作系统 拱门