2016-09-23 8 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を呼びたいが、あなたはOSを設定し、あなたがそれを使用する最初にshell uname

+0

'OS =ダーウィンビルドos'します:ターゲットと' make'コマンドは 'ビルドos'をどこ環境で実行、​​それはケースではない場合は、このように、それは、.PHONYターゲットを使用する方が良いでしょう'os'変数が' darwin'に設定されています –

+0

@MichelBillaud私のスクリプトはあなたにメソッドを試しましたが、それはOKではありません – roger

+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: build build-output 
関連する問題