如何在Makefile中使用参数调用另一个任务?

时间:2016-09-23 13:46:34

标签: makefile

我想用这样的参数调用另一个任务:

FILES = `find . -type d -name '*_server' -maxdepth 1`
UNAME = $(shell uname)

build:
ifeq (${UNAME}, Darwin)
build: build-os os=darwin # I want to set os to darwin, then call build-os
else
build: build-os os=linux
endif

build-os:
    gox -verbose \
    -os="${os}" \
    -arch="amd64" \
    -output="${DIST}/{{.OS}}-{{.Arch}}/{{.Dir}}" ${FILES}

正如您所看到的,我想要致电build的任务build-os取决于shell uname

1 个答案:

答案 0 :(得分:1)

首先设置操作系统,然后在目标中使用它:

FILES = `find . -type d -name '*_server' -maxdepth 1`
UNAME = $(shell uname)

ifeq ($(UNAME), Darwin)
os=darwin
else
os=linux
endif

build: build-os

build-os:
    gox -verbose \
    -os="${os}" \
    -arch="amd64" \
    -output="${DIST}/{{.OS}}-{{.Arch}}/{{.Dir}}" ${FILES}

请注意,建议您的目标名称与构建的实际输出相匹配。如果不是这样,最好使用.PHONY目标,如下:

.PHONY: build build-output