這可能是一個非常基本的,但我需要調用一個函數中的一個函數,但我無法弄清楚:生成文件調用函數
chmod-prod:
chown git:git-R ./
composer-dev:
[who do I how chmod-prod: within here]
任何幫助,將不勝感激
這可能是一個非常基本的,但我需要調用一個函數中的一個函數,但我無法弄清楚:生成文件調用函數
chmod-prod:
chown git:git-R ./
composer-dev:
[who do I how chmod-prod: within here]
任何幫助,將不勝感激
注意chmod-prod
和composer-dev
被稱爲製造術語的目標。
使用目標
如果chmod-prod
結果需要composer-dev
的「配方」的其餘部分之前發生再做出最自然的方式將其添加爲一個依賴。
composer-dev: chmod-prod
[the rest of composer-dev recipe]
鑑於這兩個目標不會導致產生與其名稱的文件,這將是他們聲明爲.PHONY
好的做法:
.PHONY: chmod-prod
.PHONY: composer-dev
這確保了目標不會受影響如果有人添加具有相同名稱的文件。
使用可變
另一種途徑是在一個變量存儲命令:
chmod_prod_cmd:=chown git:git-R ./
哪位能那麼在這兩個你的目標的食譜中:
composer-dev:
$(chmod_prod_cmd)
composer-dev:
$(chmod_prod_cmd)
[presumably some more recipe]
罐裝多行配方
如果你想重用配方位涉及多行,那麼你將需要使用的不是普通的變量賦值的define
指令:
define chmod_prod_cmd
echo Doing something
chown git:git-R ./
endef
假設那些需要是目標(他們序列方式)那麼PeterSW有正確的答案。
如果他們中需要更細粒度的排序的composer-dev
配方的身體,那麼你可能永遠只是再次運行make(如$(MAKE) chmod-prod
),雖然我不建議makefile文件的這種結構,因爲它是昂貴的(說的最小)。
這就是說如果chmod-prod
配方體實際上只是一個簡單的單(或系列)外殼命令(不需要運行外部手動即作爲make chmod-prod
)的隨後使用make變量/ define
代替目標。
像這樣的事情
chmod-prod := chown git:git-R ./
或本
define chmod-prod
chown git:git-R ./
endef
像這樣
composer-dev:
some_command
$(chmod-prod)
other_command
謝謝:)真的很有用 –
使用謝謝您的時間和一個非常詳細的問題。這是完美的,它希望它可以幫助別人。 –