C++ নিয়মের সাথে একীভূত করা

এই পৃষ্ঠাটি বর্ণনা করে কিভাবে বিভিন্ন স্তরে C++ নিয়মের সাথে একীভূত করা যায়।

C++ টুলচেইন অ্যাক্সেস করা হচ্ছে

প্ল্যাটফর্ম এবং টুলচেইনে C++ নিয়মের চলমান স্থানান্তরের কারণে, আপনার @bazel_tools//tools/cpp:toolchain_utils.bzl- উপলব্ধ হেল্পার ফাংশন ব্যবহার করা উচিত, যা টুলচেইন নিষ্ক্রিয় এবং সক্ষম উভয় ক্ষেত্রেই কাজ করে। আপনার নিয়মে একটি C++ টুলচেনের উপর নির্ভর করতে, _cc_toolchain নামে একটি Label বৈশিষ্ট্য যোগ করুন এবং এটিকে @bazel_tools//tools/cpp:current_cc_toolchain এ নির্দেশ করুন ( cc_toolchain_alias নিয়মের একটি উদাহরণ, যা বর্তমানে নির্বাচিত C++ টুলচেনের দিকে নির্দেশ করে)। তারপর, নিয়ম বাস্তবায়নে, CcToolchainInfo পেতে CcToolchainInfo find_cpp_toolchain(ctx) ব্যবহার করুন। একটি সম্পূর্ণ কাজের উদাহরণ নিয়ম_সিসি উদাহরণে পাওয়া যাবে।

C++ টুলচেন ব্যবহার করে কমান্ড লাইন এবং এনভায়রনমেন্ট ভেরিয়েবল তৈরি করা

সাধারণত, আপনি C++ টুলচেইনের সাথে একীভূত হবেন যাতে C++ নিয়মের মতো একই কমান্ড লাইন পতাকা থাকে, কিন্তু সরাসরি C++ অ্যাকশন ব্যবহার না করে। এর কারণ হল আমাদের নিজস্ব ক্রিয়াগুলি লেখার সময়, তাদের অবশ্যই C++ টুলচেইনের সাথে ধারাবাহিকভাবে আচরণ করতে হবে - উদাহরণস্বরূপ, C++ কমান্ড লাইন পতাকাগুলিকে এমন একটি টুলে পাস করা যা পর্দার পিছনে C++ কম্পাইলারকে আহ্বান করে।

C++ নিয়মগুলি বৈশিষ্ট্য কনফিগারেশনের উপর ভিত্তি করে কমান্ড লাইন নির্মাণের একটি বিশেষ উপায় ব্যবহার করে। একটি কমান্ড লাইন নির্মাণ করতে, আপনার নিম্নলিখিত প্রয়োজন:

  • features এবং action_configs - এগুলি CcToolchainConfigInfo থেকে আসে এবং CcToolchainConfigInfo এ এনক্যাপসুলেট করা CcToolchainInfo
  • ফিচার কনফিগারেশন - FeatureConfiguration দ্বারা ফেরত দেওয়া হয়েছে
  • cc টুলচেন কনফিগার ভেরিয়েবল - cc_common.create_compile_variables বা cc_common.create_link_variables দ্বারা ফেরত দেওয়া হয়।

এখনও টুল-নির্দিষ্ট গেটার আছে, যেমন compiler_executable । এর থেকে get_tool_for_action পছন্দ করুন, কারণ টুল-নির্দিষ্ট গেটাররা শেষ পর্যন্ত সরানো হবে।

একটি সম্পূর্ণ কাজের উদাহরণ নিয়ম_সিসি উদাহরণে পাওয়া যাবে।

স্টারলার্ক নিয়মগুলি বাস্তবায়ন করা যা C++ নিয়মের উপর নির্ভর করে এবং/অথবা যে C++ নিয়মগুলির উপর নির্ভর করতে পারে

বেশিরভাগ C++ নিয়ম CcInfo প্রদান করে, একটি প্রদানকারী যার মধ্যে CompilationContext এবং LinkingContext । এগুলোর মাধ্যমে সমস্ত ট্রানজিটিভ হেডার বা লাইব্রেরি লিঙ্ক করার মতো তথ্য অ্যাক্সেস করা সম্ভব। CcInfo থেকে এবং CcToolchainInfo কাস্টম Starlark নিয়ম থেকে তাদের প্রয়োজনীয় সমস্ত তথ্য পেতে সক্ষম হওয়া উচিত।

যদি একটি কাস্টম স্টারলার্ক নিয়ম CcInfo প্রদান করে, তবে এটি C++ নিয়মগুলির জন্য একটি সংকেত যে তারা এটির উপরও নির্ভর করতে পারে। তবে সতর্ক থাকুন - যদি আপনাকে শুধুমাত্র গ্রাফের মাধ্যমে CcInfo বাইনারি নিয়মে প্রচার করতে হয় যেটি তারপর এটি ব্যবহার করে, তাহলে একটি ভিন্ন প্রদানকারীতে CcInfo মোড়ানো করুন। উদাহরণস্বরূপ, যদি java_library নিয়ম java_binary পর্যন্ত নেটিভ নির্ভরতা প্রচার করতে চায়, তাহলে এটি সরাসরি java_binary প্রদান CcInfo না ( cc_binary উপর নির্ভর করে java_library কোন মানে হয় না), এটিকে এটি মোড়ানো উচিত, উদাহরণস্বরূপ, JavaCcInfo

একটি সম্পূর্ণ কাজের উদাহরণ নিয়ম_সিসি উদাহরণে পাওয়া যাবে।

C++ নিয়মের যুক্তি এবং ক্রিয়া পুনরায় ব্যবহার করা

এখনও স্থিতিশীল নয়; API স্থিতিশীল হয়ে গেলে এই বিভাগটি আপডেট করা হবে। আপ-টু-ডেট তথ্যের জন্য #4570 অনুসরণ করুন।