2016-09-23 2 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

'ос = Darwin сделать билд-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 
Смежные вопросы