זוהי הפקודה makedepf90 שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
makedepf90 - יוצר רשימת תלות של Makefile עבור קבצי מקור Fortran.
תַקצִיר
makedepf90 [-h] [-V] [-W|-חסר] [-מבולבל] [-m fmt] [-u שם מודול] [-d פילה] [-r
לשלוט] [-R פילה לשלוט] [-תוקן|-חופשי] [-o שם קובץ ההפעלה] [-קוקו] [-D שֵׁם] [-b נתיב]
[-I PATH1:PATH2:...] [-nosrc] קבצי מקור)
תיאור
makedepf90 היא תוכנית ליצירה אוטומטית של רשימות תלות וחוקי קומפילציה
עבור Makefiles.
הרעיון המקורי היה לספק את אותה פונקציונליות עבור Fortran כמו
gcc -MM *.c
עושה עבור C. כיום makedepf90 למעשה מחליף את הפונקציונליות הזו, מה שגורם לי לתהות
אם אני צריך להרחיב את makedepf90 לתמוך גם ב-C ו-C++ ;-).
makedepf90 תומך בשניהם מודולים, לכלול:s, cpp(1) #include:s, f90ppr(1) $include:s ו
קוקו(1) כולל וקבצי סט.
makedepf90 קורא קובצי מקור של Fortran שניתנו בשורת הפקודה, וכותב תלות
רשימה ל-stdout; עבור כל קובץ הוא כותב שורה בפורמט הבא:
מטרות : תנאים מוקדמים
יעדים הם הקבצים שיהיו תוצאה של קומפילציה של הקובץ עם ה- -c אוֹפְּצִיָה,
ו תנאים מוקדמים הם קבצים הדרושים כדי להדר את הקובץ. בנוסף, makedepf90
יכול ליצור באופן אופציונלי את שורת התלות ו-make-regel הדרושים לקישור הגמר
הפעלה.
פורטרן תלות
הקבצים הדרושים להידור קובץ, כלומר ה תנאים מוקדמים מהקובץ הם:
- קובץ המקור עצמו
- קבצים עם מידע ממשק על מודולי USEd, שנוצרו על ידי המהדר while
קומפילציה של המודולים (לעתים קרובות נקראים שם מודול.mod או משהו דומה, להלן
נקרא קבצי mod).
- קבצי כלול (כולל קבצים כלולים וקובצי מוד של מודולים שמשתמשים בהם
include-files).
- קוקו set-files, if קוקו(1) נמצא בשימוש וקיימים קבצי סט.
מכיוון שמהדרים שונים משתמשים במוסכמות שונות של שמות עבור קבצי המוד, מפרט אותם
ברשימת התלות מביאים לקבצי makefile שאינם ניידים. לכן זה נוהג מקובל
כדי לרשום את קובץ האובייקט (שם הקובץ.o) המתאים לקובץ המקור המכיל את ה-USEd
מודולים במקום. זוהי התנהגות ברירת המחדל של makedepf90. כדי לשנות זאת, השתמש ב- -m
אפשרות (למשל -m "%m.mod" אם המהדר שלך נותן שמות לקבצי המוד שם מודול.mod)
כלול קבצים שלא נמצאו בספריית העבודה לא יופיעו בתלות
רשימה, בהנחה שהם חלק מספריה (שמשתנה לעיתים רחוקות) שאינה חלק מהתוכנית.
גם קובצי מוד של מודולים שההגדרות שלהם לא נמצאו יופיעו ברשימה זהה
סיבה.
אפשרויות
אפשרויות אלה עשויות להינתן בכל מקום, בכל סדר, בשורת הפקודה. רווח בין א
אפשרות והטיעון שלה הוא אופציונלי. לא ניתן לקבץ אפשרויות (-hW זה לא אותו הדבר
דבר כמו -h -W).
-h or - עזרה
הדפס הודעת עזרה קצרה ל-stdout ולצאת.
-V or --גִרְסָה
גרסת הדפסה ומידע על זכויות יוצרים כדי לעמוד ולצאת
-W or -חסר
הדפס אזהרות לגבי מודולים חסרים וכלול קבצים
-מבולבל
הדפס אזהרות כאשר אתה מבולבל (או בגלל באגים ב-makedepf90 עצמו, או
בגלל דברים מוזרים בקבצי המקור שלך). אם makedepf90 מפספס כמה
תלות, או לעשות דברים מוזרים אחרים, אפשרות זו עשויה לתת מושג לגבי מה
קורה.
-m fmt לספר makedepf90 שלקובצי mod יהיו שמות של הפורמט fmt. fmt עשוי להכיל
המשתנים %f ל שם הקובץ (ללא שם קובץ .suffix), %m ל שם מודול (ב
אותיות קטנות), %M ל MODULENAME (באותיות גדולות) ו %% ל '%'. ברירת המחדל היא "%fo".
-u שם מודול
התעלם מכל המודולים ששמו שם מודול.
-d פילה
הפוך את כל המטרות לתלויות פילה.
-r לשלוט
להוסיף לשלוט (מוכנס באמצעות טאב) לכל שורות התלות למעט שורות שניתנו לכללים
עם -R אוֹפְּצִיָה.
לשלוט עשוי להכיל את המשתנים הבאים: %f עבור שם קובץ המקור
(ללא סיומת) נוצרת שורת התלות עבור, ו %% ל '%'.
-R 'תבנית' 'כְּלָל'
קומפיל קבצים התואמים את דפוס המעטפת דפוס באמצעות הכלל לשלוט, דפוס,
ניתן להשתמש בתווים כלליים הבאים: * = כל מספר של תווים כלשהם, ? = כל
אופי ו [א ב ג] = כל אחד מ a, b or c. שימו לב שהתאמת התבנית צריכה להיות
מבוצע על ידי makedepf90, לא הקליפה. לָכֵן דפוס צריך להיות מוקף ב
ציטוטים (" or '). ל לשלוט מחיל את אותם כללים כמו עבור -r מֵעַל.
שימו לב שיש הבדל דק בין "-r לשלוט"ו"-R '*' לשלוט". בתוך ה
מקרה לשעבר לשלוט יוחל רק על קווים שלא ניתן להם כלל באמצעות -Rתוך
במקרה האחרון, לשלוט יוחל על את כל קווים.
-תוקן / -חופשי
התייחס לקבצים כפורמט מקור קבוע/חינמי. אם שתי האפשרויות ניתנות, השנייה
משמש. ברירת מחדל: קבצים עם סיומות .f, .F, .ל, .ל or .ftn מתייחסים אליו כאל
פורמט קבוע ו .f90, .F90, .f95 or .XXXXX מתייחסים כפורמט חופשי.
-o שם
אפשרות זו תגרום makedepf90 כדי להגדיר את המאקרו Makefile FOBJ=קבצי אובייקט,
ושורת תלות + כלל לתהליך הקישור הסופי ליצירת קובץ ההפעלה
שם. כדי להגדיר את כלל הקישור, השתמש באפשרות -l.
-l לשלוט
השתמש לשלוט בעת קישור קובץ ההפעלה. ברירת המחדל היא
$(FC) -o $@ $(FFLAGS) $(LDFLAGS) $(FOBJ) $(LIBS).
לאפשרות זו אין השפעה אלא אם כן -o משמש.
-קוקו לחפש קוקו(1) קבצי סט (קוקו ??include:s נתמכים באופן אוטומטי). זֶה
האופציה מרמזת -חופשי.
-D שֵׁם
הגדר את סמל טרום המעבד שֵׁם.
-b נתיב
עץ התלות וכלל הקישור יניחו שאובייקטים ממוקמים נתיב. זה
שימושי אם ה-build ממקם קבצי אובייקט בספרייה שונה מהמקור
קבצים.
-I רשימת שבילים
חפש קבצי מקור/כלול ב- רשימת שבילים, אם לא נמצא בעבודה הנוכחית
מַדרִיך. פה, רשימת שבילים היא רשימה מופרדת בנקודתיים של שמות נתיבים.
-nosrc אל תפרט את קובץ המקור בין הדרישות המוקדמות.
דוגמאות
בסיסי נוֹהָג
הנה דוגמה לבסיס makedepf90 שימוש יחד עם לעשות(1). צור קובץ בשם
קובץ Makefile עם התוכן הבא:
----------------------
# FC = המהדר לשימוש
FC=f90
# אפשרויות מהדר
FFLAGS=-O
# רשום כאן ספריות המשמשות את התוכנית
LIBS =
# כללי סיומת: התחל בזריקת כל הסיומות הישנות-
# כללים, ולאחר מכן צור חדשים להידור
# קבצי *.f90.
.SUFFIXES:
.SUFFIXES: .f90 .o
.f90.o:
$(FC) -c $(FFLAGS) $
# כלול את רשימת התלות שנוצרה על ידי makedepf90 למטה
כוללים .depend
# target 'נקי' למחיקת אובייקט-*.mod- ואחרים
# קבצים לא רצויים
לְנַקוֹת:
ליבת rm -f *.o *.mod
# צור רשימת תלות באמצעות makedepf90. כל הקבצים
# שצריך להרכיב כדי לבנות את התוכנית,
# כלומר כל קבצי המקור מלבד כוללים קבצים, צריך
# יינתן בשורת הפקודה ל-makedepf90.
#
# הארגומנט לאפשרות '-o' יהיה השם של ה-
תוכנית # שנוצרה בעת הפעלת 'make', במקרה זה
# 'פו בר'
depend .depend:
makedepf90 -o foobar *.f90 > .depend
-----------------------
(שים לב שכל השורות המוזחות צריכות להיות מוזחות עם טאבים, לא רווחים)
עם makefile זה, הפקודה לעשות צריך לבצע את כל הפקודות הדרושות להידור ו
לקשר את התוכנית פו בר מתוך כל קבצי *.f90 בספריית העבודה.
רשימת התלות .לִסְמוֹך יווצר (מחדש) אם .לִסְמוֹך לא קיים, או אם ה
הפקודה לעשות לסמוך רץ. יש לעשות זאת בכל פעם שבוצעו שינויים ב-
תוכנית המשפיעה על התלות של הקבצים (למשל אם נוספו קבצי מקור חדשים
לפרויקט).
דוגמה עם קוקו
אם אתה משתמש במעבד מקדים, הדברים עלולים להסתבך יותר. אם אתה בר מזל,
המהדר שלך תומך במעבד הקדם שלך ומפעיל אותו בקוד שלך באופן אוטומטי, אבל אם
זה לא, אתה צריך לתת את הפקודות כדי להפעיל את המעבד מראש בעצמך. להלן א
דוגמה ל-Makefile עבור קוקו(1)-משתמשים.
-----------------------
FC=f90
FFLAGS=-O
PREPROCESSOR=קוקו
.SUFFIXES:
.סומות: .f .f90 .o
# קבצים המסתיימים ב-.f90 מורכבים ישירות ...
.f90.o:
$(FC) -c $(FFLAGS) $
# ... בעוד אלה המסתיימים ב-.f מעובדים תחילה.
.fo:
$(PREPROCESSOR) $*; $(FC) -c $(FFLAGS) $*.f90
כוללים .depend
לְנַקוֹת:
ליבת rm -f *.o *.mod
depend .depend:
makedepf90 -coco -o foobar *.f90 *.f > .depend
-----------------------
הערה: כמה יישומים של לעשות(1) לא יבצע שום פקודה - אפילו לא לעשות לסמוך
- עם ה-Makefiles שלמעלה אלא אם כן קיים קובץ בשם .לִסְמוֹך. כדי להתגבר על זה
בעיה, או לרוץ makedepf90 באופן ידני, או התחל ביצירת ריק .לִסְמוֹך קובץ עם
הפקודה לגעת .לִסְמוֹך.
דיאגנוסטיקה
רוב הודעות השגיאה והאזהרה מובנות מאליהן, אבל חלקן עשויות להזדקק לכמה
הסברים נוספים:
אזהרה: רקורסיה להגביל הגיע in פילה שם הקובץ
בעת ניתוח רקורסיבי של קבצי include, makedepf90 הגיע למגבלת הרקורסיה.
סיבות אפשריות הן: או שיש לך כמה בֶּאֱמֶת מערכות מסובכות של כוללים
קבצים, או שיש לך כולל רקורסיבי (למשל קובץ כולל שכולל את עצמו).
במקרה האחרון; תקן את זה, גם מהדר Fortran שלך לא יאהב את זה.
השתמש ב- makedepf90 באופן מקוון באמצעות שירותי onworks.net