जीएनयू मेक का उपयोग करके समान नियमों के साथ एकाधिक निष्पादनयोग्य का निर्माण
हालांकि स्कोन्स एक सक्षम निर्माण उपकरण है, वांछित कार्यक्षमता को लागू करना चुनौतीपूर्ण हो सकता है। जीएनयू मेक का उपयोग करना एक अधिक सरल दृष्टिकोण है, जो शीर्ष-स्तरीय और व्यक्तिगत परियोजना निर्देशिकाओं दोनों से आसान निर्माण और सफाई की अनुमति देता है।
मेकफ़ाइल सेटअप
प्रदान की गई मेकफ़ाइलें all_lessons निर्देशिका और व्यक्तिगत परियोजना निर्देशिका दोनों से निर्माण और सफाई सक्षम करें। प्रत्येक प्रोजेक्ट के निष्पादन योग्य को उसकी निर्देशिका के नाम पर रखा गया है। ]
all_lessons/ हैलो वर्ल्ड/ पाठ.सीपीपी मुख्य.सीपीपी सम और विषम/ पाठ.सीपीपी मुख्य.सीपीपी कैलकुलेटर/ पाठ.सीपीपी user_created_add.cpp main.cppमेकफ़ाइल सामग्री
all_lessons/ helloworld/ lesson.cpp main.cpp even_or_odd/ lesson.cpp main.cpp calculator/ lesson.cpp user_created_add.cpp main.cpp
सभी: %: फ़ॉरवर्ड_ # मुख्य मेकफ़ाइल पर अग्रेषित करके कोई भी लक्ष्य बनाएं $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .फ़ोनी: फ़ॉरवर्ड_
मेकफ़ाइल
# प्रोजेक्ट कॉन्फ़िगरेशन प्रोजेक्ट_डीआईआर:= $(शेल फाइंड * -मैक्सडेप्थ 0 -टाइप डी) निर्वासन := $(foreach dir,${project_dirs},${dir}/${dir}) सभी : ${exes} # नियम .दूसराविस्तार: ऑब्जेक्ट = $(patsubst %cpp,%o,$(वाइल्डकार्ड $(dir ${1})*.cpp)) # जोड़ना ${exes} : % : $$(कॉल ऑब्जेक्ट्स,$$*) मेकफ़ाइल g -o $@ $(फ़िल्टर-आउट मेकफ़ाइल,$^) ${LDFLAGS} ${LDLIBS} # .o संकलित करें और निर्भरताएँ उत्पन्न करें %o : %cpp मेकफ़ाइल g -c -o $@ -Wall -Wextra ${CPPFLAGS} ${CXXFLAGS} -MD -MP -MF ${@:.o=.d} $all : % : forward_ # build any target by forwarding to the main makefile $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : forward_उपयोग
# project configuration project_dirs := $(shell find * -maxdepth 0 -type d ) exes := $(foreach dir,${project_dirs},${dir}/${dir}) all : ${exes} # rules .SECONDEXPANSION: objects = $(patsubst %.cpp,%.o,$(wildcard $(dir ${1})*.cpp)) # link ${exes} : % : $$(call objects,$$*) Makefile g -o $@ $(filter-out Makefile,$^) ${LDFLAGS} ${LDLIBS} # compile .o and generate dependencies %.o : %.cpp Makefile g -c -o $@ -Wall -Wextra ${CPPFLAGS} ${CXXFLAGS} -MD -MP -MF ${@:.o=.d} $< .PHONY: clean clean : rm -f $(foreach exe,${exes},$(call objects,${exe})) $(foreach dir,${project_dirs},$(wildcard ${dir}/*.d)) ${exes} # include dependency files -include $(foreach dir,${project_dirs},$(wildcard ${dir}/*.d))
[project_directory]$ ln -s ../project.mk मेकफ़ाइल # एक सिम्लिंक बनाएं [project_directory]$ make
शीर्ष-स्तरीय निर्देशिका से निर्माण
[all_lessons]$ makeall : % : forward_ # build any target by forwarding to the main makefile $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : forward_
व्यक्तिगत परियोजना निर्देशिकाओं की सफाई
[project_directory]$ सीडी .. [all_lessons]$ साफ करेंall : % : forward_ # build any target by forwarding to the main makefile $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : forward_
सभी परियोजनाओं की सफाई
[all_lessons]$ साफ करेंअस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3