मैं इस तरह से कई मेकफाइल्स का उपयोग करने की कोशिश कर रहा हूं:
में ~/generator/Makefile
:
foo.xml: foo-part1.xml foo-part2.xml foo-part3.xml
./generate $^ > $@
और में ~/some/other/dir/Makefile
:
foo.xml:
$(MAKE) -C ~/generator $@
mv ~/generator/$@ $@
समस्या यह है: जब मैं जाता हूं ~/some/other/dir/
और भाग खड़ा हुआ make foo.xml
, के लिए कोई निर्भरता सूची नहीं है foo.xml
, तथा make -C ~/generator foo.xml
isn "t भी अगर (उदाहरण के लिए) कहा जाता है ~/generator/foo-part1.xml
लक्ष्य से नया है।
एकमात्र उपाय जिसका मैंने सोचा था कि निरपेक्ष पथ के साथ निर्भरता सूची की प्रतिलिपि बनाई जा रही है ~/some/other/dir/Makefile
, जो काफी भयानक है:
foo.xml: ~/generator/foo-part1.xml ~/generator/foo-part2.xml ~/generator/foo-part3.xml
फिर, मेरा सवाल यह है: क्या पूछने के लिए एक मेकफाइल में एक तरीका है एक और makefile लक्ष्य की निर्भरताएँ क्या हैं? या केवल अनुरोध को आगे बढ़ाने के लिए foo.xml
उस मेकफाइल और परिणाम को इकट्ठा करने के लिए? मैं मूल रूप से दूसरा मेकफाइल चाहता हूं कि वह पहले एक पर भरोसा करे जब यह तय हो जाए कि क्या लक्ष्य को फिर से बनाया जाना चाहिए, और जब इसे बनाने की बात आती है।
उत्तर:
जवाब के लिए 0 № 1मैंने दूसरे मेकफाइल में दो नियम बनाकर इसे हल किया:
और में ~/some/other/dir/Makefile
:
.PHONY: ~/generator/foo.xml
~/generator/foo.xml:
$(MAKE) -C ~/generator $(notdir $@)
foo.xml: ~/generator/foo.xml
cp $< $@