C++ এবং Bazel

এই পৃষ্ঠায় সংস্থান রয়েছে যা আপনাকে C++ প্রকল্পের সাথে Bazel ব্যবহার করতে সাহায্য করে। এটি Bazel-এর সাথে C++ প্রকল্প নির্মাণের জন্য নির্দিষ্ট একটি টিউটোরিয়াল, বিল্ড নিয়ম এবং অন্যান্য তথ্যের সাথে লিঙ্ক করে।

Bazel সঙ্গে কাজ

নিম্নলিখিত সংস্থানগুলি আপনাকে C++ প্রকল্পগুলিতে বেজেলের সাথে কাজ করতে সহায়তা করবে:

সেরা অনুশীলন

সাধারণ Bazel সেরা অনুশীলনগুলি ছাড়াও, নীচে C++ প্রকল্পগুলির জন্য নির্দিষ্ট সেরা অনুশীলনগুলি রয়েছে৷

ফাইল তৈরি করুন

আপনার BUILD ফাইল তৈরি করার সময় নীচের নির্দেশিকা অনুসরণ করুন:

  • প্রতিটি BUILD ফাইলে ডিরেক্টরিতে প্রতি সংকলন ইউনিটে একটি cc_library নিয়ম লক্ষ্য থাকা উচিত।

  • ক্রমবর্ধমানতা বাড়াতে এবং বিল্ডটিকে সমান্তরাল করতে আপনার সি++ লাইব্রেরিগুলিকে যতটা সম্ভব দানাদার করা উচিত।

  • যদি srcs এ একটি একক সোর্স ফাইল থাকে, তাহলে C++ ফাইলের নামের মতো লাইব্রেরির নাম দিন। এই লাইব্রেরিতে C++ ফাইল(গুলি), যেকোন মেলে হেডার ফাইল(গুলি) এবং লাইব্রেরির সরাসরি নির্ভরতা থাকা উচিত৷ উদাহরণ স্বরূপ:

    cc_library(
        name = "mylib",
        srcs = ["mylib.cc"],
        hdrs = ["mylib.h"],
        deps = [":lower-level-lib"]
    )
    
  • ফাইলে প্রতি cc_library টার্গেটের জন্য একটি cc_test নিয়ম টার্গেট ব্যবহার করুন। টার্গেটের নাম দিন [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 কোডের জন্য যার জন্য প্রজেক্ট রিপোজিটরির বাইরে নির্দেশ করা অন্তর্ভুক্ত, যেমন এক্সটার্নাল রিপোজিটরিতে একটি প্রিফিক্সের প্রয়োজন রয়েছে, cc_library নিয়ম টার্গেটে include_prefix এবং strip_include_prefix আর্গুমেন্ট ব্যবহার করুন।