2013-05-03 6 views
5

मैं एक विशाल रिकर्सिव मेकफ़ाइल प्रोजेक्ट को संशोधित करने पर काम कर रहा हूं जिसमें 6000+ स्रोत फ़ाइलें हैं। जिनमें से सभी क्लीयरकेस नियंत्रित हैं। चूंकि मैं पूरे स्रोत पेड़ की प्रतिलिपि नहीं बनाना चाहता हूं, इसलिए मैं एक नई परियोजना बनाने की कोशिश कर रहा हूं जिसमें केवल संशोधित स्रोत फाइलें हों और इस प्रकार स्रोत को मूल पेड़ से खींचें यदि वे मेरे संशोधित पेड़ में मौजूद नहीं हैं।स्रोत फ़ाइल मौजूद होने पर एक निर्देशिका से कैसे निर्माण किया जाए, अन्यथा किसी अन्य से निर्माण करें?

Dir Structure

मैं पहले से ही है, तो प्रत्येक फ़ोल्डर स्थानीय स्तर पर मौजूद है की जाँच करें और उस फ़ोल्डर में बनाने के अगर यह होता है निष्पादित करने के लिए ModDir में makefile संशोधित किया है। अन्यथा यह sourceDir में निष्पादित करता है। मेरा मुद्दा subdir मेकफ़ाइल में निहित है।

प्रत्येक उपदिर मेकफ़ाइल में उस मॉड्यूल के लिए आवश्यक सभी स्रोत फ़ाइलों की एक सूची होती है। यदि यह मौजूद है, तो मुझे फ़ाइल को स्थानीय रूप से बनाने का एक तरीका ढूंढना होगा, अन्यथा SourceDir/subdir से फ़ाइल बनाएं।

आईई। मेरी छवि में, Dir1 मेकफ़ाइल को F1ModDir/Dir1/F1 से बनाने की आवश्यकता है, और SourceDir/Dir1/F2-F3 से अन्य फ़ाइलें बनाएं।

मैंने दोनों स्थानों में स्रोत फ़ाइलों का पता लगाने के लिए वीपीएटीएच का उपयोग करने की कोशिश की (ModDir सबसे पहले) जो खूबसूरती से काम करता है। हालांकि, मान लें कि ऑब्जेक्ट फ़ाइलें ModDir में हैं, इसलिए SourceDir में बनाई गई ऑब्जेक्ट फ़ाइलों में से कोई भी नहीं मिल सकता है।

मैंने बैश के साथ मेक फ़ाइल सूची को संशोधित करने के लिए प्री-बिल्ड नियम बनाने का भी प्रयास किया, लेकिन मुझे नहीं पता कि यह भी संभव है या नहीं।

स्रोत फ़ाइल मौजूद होने पर मैं एक निर्देशिका से बनाने के लिए कैसे उपयोग करूं (अन्यथा ModDir), अन्यथा किसी अन्य (SourceDir) से निर्माण करें?

+0

"कॉल करने से पहले [बनाओ 'SourceDir' में निर्मित ऑब्जेक्ट फ़ाइलों में से कोई भी नहीं मिला।" शायद उन फ़ाइलों का उपयोग न करना सबसे अच्छा है, क्योंकि सख्ती से नए मेकफ़ाइलों को बोलने की शक्ति नहीं है। – Beta

+3

क्या आप गायब स्रोत फ़ाइलों के प्रतीकात्मक लिंक के साथ 'मॉडडिर' को पॉप्युलेट नहीं कर सके? या यहां तक ​​कि एक तीसरा पेड़ भी बनाओ जिसमें 'SourceDir' और' ModDir' में फ़ाइलों के प्रतीकात्मक लिंक शामिल हैं? – bobbogo

+0

हां, मैं सिम्लिंक का उपयोग कर सकता हूं लेकिन मैं ModDir को अव्यवस्थित नहीं करना चाहता हूं। अभी के लिए, मैंने SourceDir में स्थित प्रत्येक फ़ाइल में प्रत्येक ModDir मेकफ़ाइल में पूरा पथ जोड़ा है। यह अच्छी तरह से काम करता है, लेकिन मैं प्रक्रिया को स्वचालित करने की उम्मीद कर रहा था। – SPARCpenguin

उत्तर

1

सबसे आसान तरीका है एक बाहरी बैश या बैच (जो भी ओएस आप का उपयोग) में अपने "अगर ... फिर ... किसी और" तर्क डाल करने के लिए किया जाएगा स्क्रिप्ट और स्वैप makefile रों make

संबंधित मुद्दे