मेरे पास जीएनयू मेक का उपयोग कर सी ++ छोटी परियोजना है। मैं निम्नलिखित स्रोत फ़ाइलों चालू करने के लिए सक्षम होने के लिए करना चाहते हैं: निम्न उत्पादन संरचना मेंजीएनयू के साथ फ्लैट ऑब्जेक्ट फ़ाइल निर्देशिका संरचना आउटपुट
src/
a.cpp
b/
b.cpp
c/
c.cpp
(मैं इस बिंदु पर डुप्लिकेट के बारे में चिंतित नहीं हूँ): अब तक मेरे पास है
build/
a.o
b.o
c.o
निम्नलिखित, जो दुर्भाग्य से ओ डालता है और सही प्रत्येक सीपीपी के बगल में .d:
OBJS := $(foreach file,$(SRCS),$(file).o)
DEPS := $(patsubst %.o,%.d,$(OBJS))
sinclude $(DEPS)
$(OBJS) : %.o : %.cpp
@echo Compiling $<
$(CC) $(CC_FLAGS) $(INCS) -MMD -o [email protected] $<
मैं $ (notdir ...) समारोह के बारे में पता है, लेकिन इस बिंदु पर मेरे प्रयासों इसका इस्तेमाल करने के वस्तुओं को फ़िल्टर करने में विफल रहा है। क्या कोई इस पर रोशनी डाल सकता है? ऐसा करने के लिए काफी उचित बात लगता है।
ठीक है, इस दृष्टिकोण का उपयोग करके मुझे आउटपुट फ़ोल्डर में उप-फ़ोल्डर बनाने के लिए शायद एक अतिरिक्त नियम की आवश्यकता होगी? – Justicle
मैं इस मार्ग पर जा रहा हूं - क्योंकि मुझे लक्ष्य और कॉन्फ़िगरेशन विशिष्ट बिल्ड फ़ोल्डरों को वैसे भी बनाना है, फिर भी "बिल्डफोल्डर" चरण में कुछ और फ़ोल्डरों को जोड़ना आसान था। धन्यवाद! – Justicle
बिल्ड फ़ोल्डर्स के लिए एक अलग नियम ठीक काम करना चाहिए। मैं आमतौर पर जो करता हूं, ऑब्जेक्ट फ़ाइल बनाने के हिस्से के रूप में आउटपुट निर्देशिका (यदि यह पहले से मौजूद नहीं है) बनाने के लिए कमांड स्क्रिप्ट को "@mkdir -p $ (dir $ @)" पंक्ति जोड़ता है (रों)। –