C++ और Bazel

समस्या की शिकायत करें सोर्स देखें

इस पेज पर ऐसे संसाधन मौजूद हैं जो C++ प्रोजेक्ट के साथ Bazel का इस्तेमाल करने में आपकी मदद करते हैं. यह Bazel के साथ 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_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 आर्ग्युमेंट इस्तेमाल करें.