Difference between revisions of "He/כלי בניה"
m (→Autotools: style) |
m (→Ninja: format) |
||
(11 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
! scope="row"|שפות | ! scope="row"|שפות | ||
| [[Build Tools|אנגלית]] | | [[Build Tools|אנגלית]] | ||
− | |||
− | |||
| [[{{PAGENAME}}|עִברִית]] | | [[{{PAGENAME}}|עִברִית]] | ||
− | |||
− | |||
|} | |} | ||
== כללי == | == כללי == | ||
− | + | במסגרת מיזם גנוקאש, אנו משתמשים במגוון כלי־בניה שמהדרים את: התכנית, המסמכים וחבילות יעודיות למערכות ההפעלה הנתמכות. | |
== כלים בסיסיים == | == כלים בסיסיים == | ||
− | + | להלן מספר כלי־בניה ששולטים בתהליך הבנייה ב''רמה נמוכה''. | |
=== Make === | === Make === | ||
[https://he.wikipedia.org/wiki/Make Make] הוא ''כלי בניה אוטומי'' הבונה יעדים ממקור על ידי פירוש קבצי תסריט (סקריפטים) הנקראים ''Makefiles'' המורים לכלי הבניה כיצד להפוך את קובץ או קובצי המקור לקובץ או קובצי היעד. קובצי Makefiles הם קובצי מלל רגילים. Make מטפל היטב בשתי בעיות הקשורות בבנית תוכנה בסביבה מרובת קבצים: א. טיפול בתליויות בין קבצים וספריות, ב. טיפול בשינויים במקצת מהספריות מבלי לבצע בניה מחדש. | [https://he.wikipedia.org/wiki/Make Make] הוא ''כלי בניה אוטומי'' הבונה יעדים ממקור על ידי פירוש קבצי תסריט (סקריפטים) הנקראים ''Makefiles'' המורים לכלי הבניה כיצד להפוך את קובץ או קובצי המקור לקובץ או קובצי היעד. קובצי Makefiles הם קובצי מלל רגילים. Make מטפל היטב בשתי בעיות הקשורות בבנית תוכנה בסביבה מרובת קבצים: א. טיפול בתליויות בין קבצים וספריות, ב. טיפול בשינויים במקצת מהספריות מבלי לבצע בניה מחדש. | ||
− | "סביבות פיתוח משולבות" או "IDEs" | + | "סביבות פיתוח משולבות" או "IDEs"־רבות משתמשות ב <code>make</code> (או בן דודו <code>nmake</code> של מיקרוסופט) לביצוע הבנייה. את קובצי Makefiles ניתן לכתוב באופן ידני (כמו במקרה של '''gnucash-htdocs.git''') או ליצור אותם באמצעות [[#Autotools|Autotools]] או [[#CMake|CMake]]. ניתן להפעיל את Make באופן רקורסיבי לבניית תוכניות מורכבות ולהשתמש בחותמות זמן של קבצים כדי להדר מחדש רק קבצים וספריות שבהם התלויות השתנו. קובצי Makefiles מציינים בדרך כלל מספר יעדי בניה, אותן ניתן לספק כמשתנים בזמן הקריאה ל־make, כדי לבצע פעולות מסוימות ולייצר פלטים מסויימים. |
=== Ninja === | === Ninja === | ||
− | [https://en.wikipedia.org/wiki/Ninja_(build_system) Ninja] היא מערכת בנייה קלת משקל ששמה דגש על מהירות ביצועים. היא תוכננה כך שקבצי הקלט שלה נוצרים על ידי מערכת בנייה | + | [https://en.wikipedia.org/wiki/Ninja_(build_system) Ninja] היא מערכת בנייה קלת משקל ששמה דגש על מהירות ביצועים. היא תוכננה כך שקבצי הקלט שלה נוצרים על ידי מערכת בנייה מרמה גבוהה יותר. היא נועדה להריץ את תהליך הבנייה במהירות הגבוהה האפשרית. |
− | ; | + | ;:הערות |
− | + | #פקודות השורה משתנות מ־<code>make [target]</code> ל־<code>ninja [target]</code>. | |
− | בקישור הבא ניתן למצוא השוואה של | + | # במספר הפצות לינוקס שם הפקודה שונה ל־<code>ninja-build</code> על מנת להבדיל בינה לבין תכנה אחרת בשם <code>ninja</code>. |
+ | בקישור הבא ניתן למצוא השוואה של CMakeו־ make, [https://ninja-build.org/manual.html#_comparison_to_make להשווה בין הכלים] | ||
− | [[#CMake|CMake]] משמש בשכיחות גבוהה לתיצור קובצי הבניה של <code>ninja</code>: | + | [[#CMake|CMake]] משמש בשכיחות גבוהה לתיצור קובצי הבניה של <code>ninja</code>:כדי לעשות זאת, יש להעביר צרף־שפה (פָּרָמֶטֶר) <code dir="ltr">-G Ninja</code> כמשתנה של <code>cmake</code>. |
== שרשראות כלים == | == שרשראות כלים == | ||
− | בנוסף, גנוקאש עושה שימוש ב''שרשראות כלים'' שונות כדי לשלוט בכלים הבסיסיים שהוזכרו לעיל. | + | בנוסף, גנוקאש עושה שימוש ב''שרשראות כלים'' שונות כדי לשלוט בכלים הבסיסיים שהוזכרו לעיל. התכנית משתמשת ב־'''CMake''' כבסיס לשרשרת הכלים שלה, בעוד ש'''תיעוד המשתמש''' נעזר ב־''Autotools''' כבסיס לשרשרת הכלים. '''אתר גנוקאש''' לעומת זאת, נבנה ישירות באמצעות [[#Make|Make]]. [[He/שימוש_ב_API| תיעוד ה־API]] נוצר מקוד המקור באמצעות [[#Make|Make]] או [[#Ninja|Ninja]], תלוי באופן שמערכת בניית קוד המקור תוצרה. |
=== CMake === | === CMake === | ||
− | על מנת להגדיר או לתצר את '''תוכנית''' מערכת הבניה, נשתמש | + | על מנת להגדיר או לתצר את '''תוכנית''' מערכת הבניה, נשתמש ב־[https://en.wikipedia.org/wiki/CMake CMake]. אמור לשמש גם עבור '''Gnucash-docs'''. |
− | זוהו יישום תכנה | + | זוהו יישום תכנה חוצת־מסדות, חופשיהלשימוש ובקוד פתוח, לניהול תהליך בניית התוכנה בשיטה שאינה תלויה במהדר. הוא תומך במבנה ספריות היררכי וביישומים התלויים במספר ספריות. הוא משמש בשילוב עם סביבות בנייה מקומיות כמו, Xcode של אפל, make ו־Visual Studio של מיקרוסופט . יש לו תלויות מזעריות, ודורש רק מהדר <span dir="ltr">C++</span> במערכת הבנייה העצמית שלו. נכון לעכשיו, CMake משמש בעיקר לתצורת מערכת הבנייה על ידי יצירת קבצי הקלט לתוכניות הבנייה '''make''' או '''ninja''' שמהדרות ומקשרות את התכנית אל הספריות שלה. כלי עזר אלה שולטים גם בהתקנת התכנית ובספריות. |
− | ראו גם [[CMake#GnuCash Configuration Variables]]. | + | ראו גם [[CMake#GnuCash Configuration Variables|GnuCash Configuration Variables]]. |
=== Autotools === | === Autotools === | ||
Line 54: | Line 51: | ||
</Syntaxhighlight> | </Syntaxhighlight> | ||
:;הערות | :;הערות | ||
− | # | + | #הפקודות <tt>configure</tt> ו־<tt>make</tt> מורצות מ־{BUILDDIR}$ בעוד שהמקור נערך בספרית האב {SOURCEDIR}$. |
− | #<code>configure</code>: תסריט מסוף זה, המחולל על ידי <code>autogen.sh</code> כפי שתואר לעיל, בודק שהמערכת והמשתנים שלה מכסים את דרישות קובצי הביניים <code>Makefile.in</code> | + | #<code>configure</code>: תסריט מסוף זה, המחולל על ידי <code>autogen.sh</code> כפי שתואר לעיל, בודק שהמערכת והמשתנים שלה מכסים את דרישות קובצי הביניים <code>Makefile.in</code> ב־<code>Makefile</code> כך שפקודת <code>make</code> תשתמש בהם בפועל כדי לחולול את קבצי התיעוד של המוצר. ניתן לצפות ברשימת הפרמטרים ומשתני הסביבה שכל תכנית <code>configure</code> "מבינה" באמצעות הפקודה <code dir="ltr">configure --help</code>. |
− | #<code>make</code>: באמצעות <code>Makefile</code> כתבנית, <code>make</code> מריץ את התכניות והתסריטים השונים הדרושים לביצוע הבנייה. המשתנים שלו הם היעדים אותם יש לבנות; יישנם שני יעדים מסויימים, <code>make check</code> מריץ סדרת בדיקות להבטחת בניית | + | #<code>make</code>: באמצעות <code>Makefile</code> כתבנית, <code>make</code> מריץ את התכניות והתסריטים השונים הדרושים לביצוע הבנייה. המשתנים שלו הם היעדים אותם יש לבנות; יישנם שני יעדים מסויימים, <code>make check</code> מריץ סדרת בדיקות להבטחת בניית המיזם כראוי ו־ <code>make install</code> שמעביר את תוצרי הבנייה למיקומים מהם ניתן להשתמש בהמשך בתכנית שנבנתה. |
'''חזרה לעמוד: | '''חזרה לעמוד: |
Latest revision as of 09:08, 11 December 2021
שפות | אנגלית | עִברִית |
---|
כללי
במסגרת מיזם גנוקאש, אנו משתמשים במגוון כלי־בניה שמהדרים את: התכנית, המסמכים וחבילות יעודיות למערכות ההפעלה הנתמכות.
כלים בסיסיים
להלן מספר כלי־בניה ששולטים בתהליך הבנייה ברמה נמוכה.
Make
Make הוא כלי בניה אוטומי הבונה יעדים ממקור על ידי פירוש קבצי תסריט (סקריפטים) הנקראים Makefiles המורים לכלי הבניה כיצד להפוך את קובץ או קובצי המקור לקובץ או קובצי היעד. קובצי Makefiles הם קובצי מלל רגילים. Make מטפל היטב בשתי בעיות הקשורות בבנית תוכנה בסביבה מרובת קבצים: א. טיפול בתליויות בין קבצים וספריות, ב. טיפול בשינויים במקצת מהספריות מבלי לבצע בניה מחדש.
"סביבות פיתוח משולבות" או "IDEs"־רבות משתמשות ב make
(או בן דודו nmake
של מיקרוסופט) לביצוע הבנייה. את קובצי Makefiles ניתן לכתוב באופן ידני (כמו במקרה של gnucash-htdocs.git) או ליצור אותם באמצעות Autotools או CMake. ניתן להפעיל את Make באופן רקורסיבי לבניית תוכניות מורכבות ולהשתמש בחותמות זמן של קבצים כדי להדר מחדש רק קבצים וספריות שבהם התלויות השתנו. קובצי Makefiles מציינים בדרך כלל מספר יעדי בניה, אותן ניתן לספק כמשתנים בזמן הקריאה ל־make, כדי לבצע פעולות מסוימות ולייצר פלטים מסויימים.
Ninja
Ninja היא מערכת בנייה קלת משקל ששמה דגש על מהירות ביצועים. היא תוכננה כך שקבצי הקלט שלה נוצרים על ידי מערכת בנייה מרמה גבוהה יותר. היא נועדה להריץ את תהליך הבנייה במהירות הגבוהה האפשרית.
- הערות
- פקודות השורה משתנות מ־
make [target]
ל־ninja [target]
. - במספר הפצות לינוקס שם הפקודה שונה ל־
ninja-build
על מנת להבדיל בינה לבין תכנה אחרת בשםninja
.
בקישור הבא ניתן למצוא השוואה של CMakeו־ make, להשווה בין הכלים
CMake משמש בשכיחות גבוהה לתיצור קובצי הבניה של ninja
:כדי לעשות זאת, יש להעביר צרף־שפה (פָּרָמֶטֶר) -G Ninja
כמשתנה של cmake
.
שרשראות כלים
בנוסף, גנוקאש עושה שימוש בשרשראות כלים שונות כדי לשלוט בכלים הבסיסיים שהוזכרו לעיל. התכנית משתמשת ב־'CMake כבסיס לשרשרת הכלים שלה, בעוד שתיעוד המשתמש נעזר ב־Autotools כבסיס לשרשרת הכלים. אתר גנוקאש לעומת זאת, נבנה ישירות באמצעות Make. תיעוד ה־API נוצר מקוד המקור באמצעות Make או Ninja, תלוי באופן שמערכת בניית קוד המקור תוצרה.
CMake
על מנת להגדיר או לתצר את תוכנית מערכת הבניה, נשתמש ב־CMake. אמור לשמש גם עבור Gnucash-docs.
זוהו יישום תכנה חוצת־מסדות, חופשיהלשימוש ובקוד פתוח, לניהול תהליך בניית התוכנה בשיטה שאינה תלויה במהדר. הוא תומך במבנה ספריות היררכי וביישומים התלויים במספר ספריות. הוא משמש בשילוב עם סביבות בנייה מקומיות כמו, Xcode של אפל, make ו־Visual Studio של מיקרוסופט . יש לו תלויות מזעריות, ודורש רק מהדר C++ במערכת הבנייה העצמית שלו. נכון לעכשיו, CMake משמש בעיקר לתצורת מערכת הבנייה על ידי יצירת קבצי הקלט לתוכניות הבנייה make או ninja שמהדרות ומקשרות את התכנית אל הספריות שלה. כלי עזר אלה שולטים גם בהתקנת התכנית ובספריות. ראו גם GnuCash Configuration Variables.
Autotools
(כלי הוצא משימוש במיזם גנוקאש) בעבר הסתמכנו על GNU Build System כדי לתצר את מערכת הבניה Gnucash-docs.בשם לעיתים קרובות גם "autotools".הכוונה היא לזנוח כלי זה לחלוטין בגרסת 4.9xx!
זוהי מערכת מורכבת, בעלת יכולת תצורה ובניית מגוון רחב של מיזמים, על מגוון רחב של מסדות. העמוד באתר The Autotools Mythbuster מספק הדרכה ומקור מצוין לאלו שמעוניינים ללמוד על יצירה ובנייה של מיזמים באמצעות כלי זה.
לאלו שמעוניינים פשוט לבנות את התיעוד מקוד המקור, שלושת הפקודות הבאות יספיקו:
autogen.sh
: בודק שכל החלקים הנדרשים של מערכת הבנייה מותקנים, ואז בונה את תוכניתconfigure
מהמקור שלוconfigure.ac
ואת Makefiles קובצי הבינייםMakefile.in
, מהמקור שלהםMakefile.am
. לאחר מכן, הרצתautogen.sh
לאחר שכפול המאגרgnucash-docs.git
, בכל פעם שעורכים קובץMakefile.am
אוconfigure.ac
, ובכל פעם שמושכים הידורים עם שינויים לקבצים אלו. מאחר שהרצתו ללא כל צורך אינה מזיקה כלל, אנו ממליצים להריץ אותו לאחר כל פקודתgit pull
.- (לא נדרש, אך מומלץ)
mkdir .build
cd .build
- הערות
- הפקודות configure ו־make מורצות מ־{BUILDDIR}$ בעוד שהמקור נערך בספרית האב {SOURCEDIR}$.
configure
: תסריט מסוף זה, המחולל על ידיautogen.sh
כפי שתואר לעיל, בודק שהמערכת והמשתנים שלה מכסים את דרישות קובצי הבינייםMakefile.in
ב־Makefile
כך שפקודתmake
תשתמש בהם בפועל כדי לחולול את קבצי התיעוד של המוצר. ניתן לצפות ברשימת הפרמטרים ומשתני הסביבה שכל תכניתconfigure
"מבינה" באמצעות הפקודהconfigure --help
.make
: באמצעותMakefile
כתבנית,make
מריץ את התכניות והתסריטים השונים הדרושים לביצוע הבנייה. המשתנים שלו הם היעדים אותם יש לבנות; יישנם שני יעדים מסויימים,make check
מריץ סדרת בדיקות להבטחת בניית המיזם כראוי ו־make install
שמעביר את תוצרי הבנייה למיקומים מהם ניתן להשתמש בהמשך בתכנית שנבנתה.
חזרה לעמוד: