makefile - How to make multi targets in one rule -


मेरी कार्य निर्देशिका में, मुझे foo.c , बार नामक कुछ फाइलें हैं I C , baz.c , प्रत्येक फ़ाइल कुछ विधियों को परिभाषित करती है और मुझे a.c और बी.c नामक दो फाइलें हैं। प्रत्येक foo.c , bar.c और baz.c से विधियों का उपयोग करके एक एकल प्रोग्राम है। मैं a और b से नीचे मेकफाइल संकलित करता हूं

  लक्ष्य: = अब ओबीजेएस: = foo.o bar.o baz.o सब : $ (लक्ष्य) एक: Ao $ (OBJS) जीसीसी $ ^ -ओ $ @ ख: बो $ (OBJS) जीसीसी $ ^ -ओ $ @% ओ:% ग जीसीसी -c $ & LT; -ओ $ @  

हालांकि, नियम एक और नियम ख समान है और अगर मेरे पास एक नया प्रोग्राम है जिसका नाम सी , मुझे एक और नियम लिखना होगा

तो क्या मैं इस तरह से एक नियम में a और b बना सकता हूं:

  $ (TARGETS) : $ (ओबीजेएस) $ (xo) gcc -c $ ^ -o $ @  

किसी भी मदद के लिए धन्यवाद।

आप ऑब्जेक्ट्स को संकलित करने के लिए पहले से ही पैटर्न नियमों का उपयोग कर रहे हैं, क्यों नहीं उन्हें निष्पादन योग्य बनाने के लिए भी उपयोग करें?

 %:%। $ (ओबीजेएस) जीसीसी $ ^ -o $ @  

या यदि आप मैच-कुछ पैटर्न नियमों से बचने के लिए पसंद करते हैं तो आप स्थिर पैटर्न नियमों का उपयोग कर सकते हैं:

  $ (TARGETS):%:%। ओ $ (ओबीजेएस) जीसीसी $ ^ -ओ $ @  

(द्वितीयक विस्तार वास्तव में इसके लिए अतिरेक है ...)


Comments