C++ ו-Bazel

הדף הזה מכיל משאבים שעוזרים לך להשתמש ב-Bazel עם פרויקטים של C++. היא מקשרת למדריך, ליצירת כללים ולמידע נוסף שהוא ספציפי לבניית פרויקט C++ באמצעות Bazel.

העבודה עם בזל

המשאבים הבאים יעזרו לך לעבוד עם Bazel בפרויקטים של C++:

שיטות מומלצות

בנוסף לשיטות המומלצות של Bazel, הנה שיטות מומלצות ספציפיות לפרויקטים ב-+C.

קובצי BUILD

כשיוצרים קובצי BUILD, יש לפעול לפי ההנחיות הבאות:

  • כל קובץ BUILD צריך לכלול cc_library יעד כלל אחד לכל יחידת הידור בספרייה.

  • עליך לחדד את ספריות C++ שלך ככל האפשר, כדי להגדיל למקסימום את קצב הצבירה במקביל.

  • אם קיים קובץ מקור יחיד ב-srcs, נותנים שם לספרייה באותו שם של קובץ C++. הספרייה הזו צריכה לכלול קובצי C++ , קובצי כותרת תואמים ואת התלות הישירה של הספרייה. למשל:

    cc_library(
        name = "mylib",
        srcs = ["mylib.cc"],
        hdrs = ["mylib.h"],
        deps = [":lower-level-lib"]
    )
    
  • יש להשתמש ביעד כלל אחד (cc_test) לכל יעד cc_library בקובץ. נותנים שם ליעד [library-name]_test ולקובץ המקור [library-name]_test.cc. לדוגמה, יעד בדיקה של יעד הספריה mylib המוצג למעלה ייראה כך:

    cc_test(
        name = "mylib_test",
        srcs = ["mylib_test.cc"],
        deps = [":mylib"]
    )
    

הכללת נתיבים

ההנחיות הבאות יעזרו לכם להוסיף נתיבים לנתיבים:

  • כולם כוללים נתיבים ביחס לספרייה של סביבת העבודה.

  • יש להשתמש במירכאות (#include "foo/bar/baz.h") לכותרות שאינן של המערכת, ולא לסוגריים זוויתיים (#include <foo/bar/baz.h>).

  • אין להשתמש במקשי קיצור לספרייה של UNIX, כמו . (הספרייה הנוכחית) או .. (ספריית הורה).

  • עבור קוד third_party או קוד קודם המחייב הצבעה מחוץ למאגר הפרויקטים, כגון מאגר חיצוני הכולל דרישת קידומת, יש להשתמש ב-include_prefix וב- strip_include_prefix ארגומנטים לגבי יעד הכלל cc_library.