2016-09-23 48 views
0

我想打电话给另一个任务有说法是这样的:如何使用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

+0

'OS =达尔文使积聚os':运行'make'与目标命令'集结os'在一个环境下, 'os'变量设置为'darwin' –

+0

@MichelBillaud我的脚本试过你的方法,它不好 – roger

+0

你的脚本,正如我所见,尝试了一些非常不同的东西,那就是在规则的依赖中使用os = something 。 –

回答

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 
相关问题