إنشاء ملفات تنفيذية متعددة بقواعد مماثلة باستخدام GNU Make
على الرغم من أن Scons هي أداة بناء قادرة، إلا أن تنفيذ الوظيفة المطلوبة قد يكون أمرًا صعبًا. هناك نهج أكثر وضوحًا وهو استخدام GNU Make، والذي يسمح بسهولة البناء والتنظيف من كل من أدلة المشاريع ذات المستوى الأعلى والفرد.
إعداد ملف Makefile
ملفات makefiles المتوفرة تمكين البناء والتنظيف من كل من دليل all_lessons وأدلة المشروع الفردية. تتم تسمية الملف القابل للتنفيذ لكل مشروع على اسم الدليل الخاص به.هيكل المشروع
ولتحقيق ذلك، ستحتاج إلى إعداد هيكل مشروع مشابه للمثال المقدم:all_lessons/ مرحبا بالعالم/ الدرس.cpp main.cpp Even_or_odd/ الدرس.cpp main.cpp آلة حاسبة/ الدرس.cpp user_created_add.cpp main.cppall_lessons/ helloworld/ lesson.cpp main.cpp even_or_odd/ lesson.cpp main.cpp calculator/ lesson.cpp user_created_add.cpp main.cpp
إنشاء محتويات الملف
project.mkالكل : % :ward_ # قم ببناء أي هدف عن طريق إعادة التوجيه إلى ملف makefile الرئيسي $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : Forward_
all : % : forward_ # build any target by forwarding to the main makefile $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : forward_Makefile
# تكوين المشروع project_dirs := $(صدفة البحث * -أقصى عمق 0 -نوع د ) exes := $(foreach dir,${project_dirs},${dir}/${dir}) الكل: ${exes} # قواعد .التوسيع الثاني: الكائنات = $(patsubst %.cpp,%.o,$(wildcard $(dir ${1})*.cpp)) # وصلة ${exes} : % : $$(استدعاء الكائنات،$$*) Makefile g -o $@ $(ملف Makefile بعد التصفية،$^) ${LDFLAGS} ${LDLIBS} # تجميع .o وإنشاء التبعيات %.o : %.cpp Makefile 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_directory]$ ln -s ../project.mk Makefile # إنشاء رابط رمزي [project_directory]$ make
all : % : forward_ # build any target by forwarding to the main makefile $(MAKE) -C .. project_dirs=$(notdir ${CURDIR}) $@ .PHONY : forward_البناء من دليل المستوى الأعلى
[all_lessons]$ make
[all_lessons]$ make
[project_directory]$cd .. [all_lessons]$ جعل نظيف
[project_directory]$ cd .. [all_lessons]$ make clean
[all_lessons]$ جعل نظيف
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3