निम्नलिखित को धयान मे रखते हुए Makefile
:
foo: FOOVAR:=$(shell prog_to_execute_only_on_foo)
foo:
echo "foo"
bar:
echo "bar"
मैं दौड़ने में सक्षम होना चाहूंगा make bar
शेल कमांड को हल किए बिना FOOVAR
.
क्या यह संभव है?
यदि नहीं, तो क्या इसके आसपास काम करने का कोई तरीका है? यह सुनिश्चित करने के लिए कि चल रहे शेल कमांड को निष्पादित नहीं किया जाएगा make bar
?
उत्तर:
जवाब के लिए 2 № 1आप इसे परिभाषित करके प्राप्त कर सकते हैं FOOVAR
के रूप में पुनरावर्ती रूप से विस्तारित चर के बजाय एक बस विस्तारित चर (यानी, का उपयोग करके =
के बजाय :=
):
foo: FOOVAR = $(shell prog_to_execute_only_on_foo)
foo:
echo "foo"
इस तरफ prog_to_execute_only_on_foo
जब निष्पादित किया जाएगा FOOVAR
का विस्तार किया गया है।
हालांकि, ध्यान दें, कि prog_to_execute_only_on_foo
निष्पादित किया जाएगा हर बार उस FOOVAR
का विस्तार किया जाता है, जबकि के लिए बस विस्तारित चर (अर्थात।, :=
) इसे केवल निष्पादित किया जाएगा बार.