כולנו או כמעט כולם (ואם אין לכם מזל) נאלצנו להרכיב תוכנית מקוד המקור. למעשה, ברוב הפרויקטים זה מספיק לבצע ./configure && make && לבצע התקנה כדי להתקין את התוכנית, אך אנו הולכים לראות את החלופות השונות:
GNU Make
GNU Make היא מערכת קומפילציה ברמה נמוכה, מעט דברים מוגדרים ולא מבוצעות בדיקות:
יתרונות:
- נפוצה מאוד
- פשוט להבנה
- מהר
חסרונות:
- לא ניתן להגדרה
- קשה לתחזק
- לא מבצע בדיקות
make
BSD Make
BSD Make היא גרסה נוספת של Make המשמשת כיום על ידי * מערכות הפעלה BSD. זה שונה מ- GNU Make, בהיותו ה- BSD Make המקיף ביותר בפונקציונליות למרות שהוא פחות נפוץ.
יתרונות:
- מהר
- פשוט להבנה
- יותר תכונות מאשר GNU Make
חסרונות:
- לא נפוץ בעולם לינוקס
- לא מבצע בדיקות
- לא ניתן להגדרה
- קשה לתחזק
make
אוטוטולים
אוטומוטולים הם מערכת ה- GNU הרשמית ויוצרת סקריפט בשם configure שעלינו להתקשר כדי ליצור את ה- Makefile המתאים מ- GNU Make. היא מופצת באופן נרחב, עם זאת, יותר ויותר אנשים (כולל אני) חושבים שזה מסורבל מדי, קשה, איטי ולא תואם במיוחד.
יתרונות:
- ניתן להגדרה גבוהה
- נפוצה מאוד
חסרונות:
- ניידות נמוכה בין מערכות שאינן UNIX
- בצע יותר מדי בדיקות (בדוק הכל, והכל הכל)
- איטי מאוד בעת ההגדרה
- תאימות לקויה לאחור
./configure && make
CMake
(המערכת המועדפת עלי) CMake היא מערכת שבאה לפצות על החסרונות של Autotools בהיבטים רבים, כמו למשל תאימות לאחור וניידות שלה. כמו כן, שיפור מערכת הבדיקה הניתנת להגדרה גבוהה לצרכי כל פרויקט. האמת היא שיותר ויותר פרויקטים משתמשים ב- CMake כמו KDE, PortAudio, Ogre3D וכו '. אנו יכולים לזהות מערכות מסוג זה הודות לקובץ CMakeLists.txt שייצור Makefile או פרויקט עבור Eclipse או CodeBlocks
יתרונות:
- מהר
- תמיכה נהדרת בין פלטפורמות
- אתה יכול להגדיר את הבדיקות בצורה מאוד ניתנת להתאמה אישית
חסרונות:
- קשה להבין בהתחלה
- אתה צריך לעבוד עם הפשטה שיכולה להיות מפחידה בהתחלה
- מעט התפשטות אם כי לאט לאט הוא גדל
cmake . && make
ש עשה
QMake היא מערכת שתוכננה על ידי Trolltech ללקט פרויקטים תוצרת Qt. באופן זה qmake שם דגש רב על Qt והוא בדרך כלל הפורמט המשמש IDEs כמו QtCreator. זה די פופולרי בפרויקטים של Qt אבל הוא לא נמצא מחוץ לסביבה זו:
יתרונות:
- משולב היטב עם Qt
- מהר
- ריבוי טוב בתוך Qt
חסרונות:
- לא שכיח מחוץ לאפליקציות Qt
qmake . && make
SCons
SCons היא מערכת מבוססת פיתון להרכבת פרויקטים של C / C ++. בשונה מאוטוטולים, CMake או QMake; SCons לא בונה Makefile. ניתן לשנות את SCons אך הוא אולי האיטי ביותר בפעולות פשוטות
יתרונות:
- שינוי קל
- גש למבחנים ההוגנים
חסרונות:
- התפשטות מועטה
- איטי
scons
בוסט ג'אם
Boost.Jam היא גרסה של Perforce Jam המשמשת בספריות C ++ Boost הפופולריות, אם כי ניתן להשתמש בנפרד במערכת האוסף. בניגוד ל- GNU Make, Boost.Jam משתמש ב- Jamfiles, שהם גרסה משופרת של Makefiles. הם פופולריים למדי בסביבת BeOS / Zeta / Haiku.
יתרונות:
- מהר
- הכי קצר לכתוב
חסרונות:
- התפשטות מועטה
- קושי בביצוע מבחנים
bjam
Ninja
נינג'ה היא מערכת שפותחה על ידי גוגל כדי לספק מערכת בנייה מהירה במיוחד שתוכננה במקור להיות זו של פרויקט כרום. הנינג'ה לא נועדה להיות קלה לשינוי, על פי המחברים שלה יש למצוא מערכת שמייצרת נינג'ה. המומלצים הם CMake ו- gyp.
יתרונות:
- מייקל ראפידו
חסרונות:
- אתה צריך מערכת אחרת כדי להוליד את נינג'ה
- התפשטות מועטה
ninja
אחר
אתה יכול להשתמש בכל מערכת אחרת כגון סקריפט בסיסי או פיתון משלך. ישנם גם גנרטורים לשפות אחרות שאינן מקומיות, בהן ניתן להשתמש כמו Gradle, Maven, gyp וכו '.
Make איננה מערכת אוסף, אלא מחולל קבצים בינאריים (או יעדים) מקוד המקור שלה. זה יכול לשמש גם בתור רץ משימות.
אני נבדל איתך שהייצור של BSD מקיף יותר בפונקציונליות, GNU הוא שלם יותר, יש לו יותר פונקציונליות. ואני אומר זאת מנסיוני, ב- BSD אני תמיד צריך להתקין את GNU make כי BSD make הוא פשוט מאוד בהשוואה ל- GNU make.
אני מסכים איתך שאוטוטולס הוא די מסורבל, אני מעדיף פשוט להשתמש ב- Makefile. קשה ליצור ניפוי שגיאות מקובלות שנוצרו על ידי אוטומוטולים.
ברכות!
תודה על התגובה!
לדעתי ה- GNU make תמיד היה יותר מסורתי ונאמן לתוכנית ה- make המקורית ו- BSD make תמיד היו חדשניים יותר אבל יכול להיות ששמתי לב לדברים אחרים בעת ביצוע ההשוואה.
אוטומוטולים הם באמת כאב ראש גדול. כתורם למערכת ההפעלה הייקו נאלצתי להעביר תוכנה עם אוטוטולים וזה גיהינום. יש מעט מקרים שבסופו של דבר יצרתי את ה- Makefile או את ה- CMakeLists.txt לפני תיקון הבלגן הזה.
כרגע אני משתמש ב- Premake4, ניתן להגדרה ופשוטה מאוד המבוסס על סקריפטים של Lua. תסתכל אם אתה לא יודע את זה.
מזל טוב על המאמר, פשוט ותמציתי, התייחסות מצוינת.
'make check' משמש לבדיקת האוסף לאחר השימוש ב- make
ברכות