C++ और Bazel

किसी समस्या की शिकायत करें सोर्स देखें रात · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

इस पेज पर ऐसे संसाधन दिए गए हैं जो C++ प्रोजेक्ट के साथ Baज़ल का इस्तेमाल करने में आपकी मदद करेंगे. यह लिंक करता है ट्यूटोरियल, नियम बनाने, और C++ बनाने के बारे में अन्य जानकारी प्रोजेक्ट पर काम किया.

बेज़ल के साथ काम करना

नीचे दिए गए संसाधनों की मदद से, C++ प्रोजेक्ट पर Baज़र के साथ काम करने में मदद मिलेगी:

सबसे सही तरीके

बेज़ल से जुड़े सबसे सही सामान्य तरीकों के अलावा, यहां दिए गए हैं C++ प्रोजेक्ट के लिए सबसे सही तरीके.

फ़ाइलें बनाएं

अपनी BUILD फ़ाइलें बनाते समय इन दिशा-निर्देशों का पालन करें:

  • हर BUILD फ़ाइल में एक cc_library होना चाहिए नियम टारगेट की संख्या को डायरेक्ट्री में हर कंपाइलेशन यूनिट के हिसाब से तय किया जाता है.

  • आपको अपनी C++ लाइब्रेरी को भी उतना ही बड़ा करना चाहिए बिल्ड के साथ-साथ लोड होने और उसे बढ़ाने में भी मदद मिलती है.

  • अगर 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 कोड के लिए, जिसके लिए गड़बड़ी की वजह से प्रोजेक्ट रिपॉज़िटरी जैसे कि एक्सटर्नल रिपॉज़िटरी में प्रीफ़िक्स की ज़रूरत होती है. include_prefix का इस्तेमाल करें और strip_include_prefix cc_library नियम के टारगेट पर आर्ग्युमेंट.

टूलचेन की सुविधाएं

ये वैकल्पिक सुविधाएं C++ प्रोजेक्ट की हाइजीन को बेहतर बनाया जा सकता है. इन्हें चालू करने के लिए, --features कमांड लाइन फ़्लैग या इसका features एट्रिब्यूट repo, package या cc_* नियम:

  • parse_headers सुविधा से यह पक्का होता है कि पार्स करने के लिए C++ कंपाइलर का इस्तेमाल किया जाए बिल्ट-इन टारगेट और उनकी डिपेंडेंसी में मौजूद सभी हेडर फ़ाइलें (इसे कंपाइल नहीं किया जाता) का इस्तेमाल करते समय --process_headers_in_dependencies फ़्लैग करें. इसकी मदद से, सिर्फ़ हेडर वाली लाइब्रेरी में आने वाली समस्याओं का पता लगाया जा सकता है. साथ ही, यह पक्का किया जा सकता है कि हेडर में पूरी जानकारी होती है. साथ ही, यह किसी भी क्रम में हो सकता है शामिल हैं.
  • layering_check सुविधा लागू करती है कि टारगेट में सिर्फ़ हेडर शामिल होते हैं उपलब्ध करा सकता है. डिफ़ॉल्ट टूलचेन इसके साथ काम करता है इस सुविधा को Linux पर, कंपाइलर के तौर पर clang के साथ सेट किया गया है.