C++ و Bazel

این صفحه حاوی منابعی است که به شما در استفاده از Bazel با پروژه های C++ کمک می کند. این به یک آموزش، قوانین ساخت و سایر اطلاعات مربوط به ساخت پروژه های C++ با Bazel پیوند دارد.

کار با بازل

منابع زیر به شما کمک می کند با Bazel در پروژه های C++ کار کنید:

بهترین شیوه ها

علاوه بر بهترین روش‌های عمومی Bazel ، در زیر بهترین روش‌های ویژه پروژه‌های C++ آمده است.

فایل ها را بسازید

هنگام ایجاد فایل های 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> ).

  • از استفاده از میانبرهای دایرکتوری یونیکس مانند . (دایرکتوری فعلی) یا .. (دایرکتوری والد).

  • برای کدهای قدیمی یا third_party که شامل اشاره به خارج از مخزن پروژه است، مانند مخزن خارجی شامل نیاز به پیشوند، از آرگومان های include_prefix و strip_include_prefix در هدف قانون cc_library استفاده کنید.