इस पेज पर ऐसे संसाधन मौजूद हैं जिनकी मदद से, C++ प्रोजेक्ट के साथ Bazel का इस्तेमाल किया जा सकता है. इसमें Bazel की मदद से C++ प्रोजेक्ट बनाने से जुड़े ट्यूटोरियल, नियम बनाने, और अन्य जानकारी के लिंक दिए गए हैं.
Bazel का इस्तेमाल करना
C++ प्रोजेक्ट पर Bazel का इस्तेमाल करने के लिए, यहां दिए गए संसाधनों का इस्तेमाल करें:
- ट्यूटोरियल: C++ प्रोजेक्ट बनाना
- C++ के इस्तेमाल के सामान्य उदाहरण
- C/C++ के नियम
- ज़रूरी लाइब्रेरी
- C++ टूलचेन का कॉन्फ़िगरेशन
- ट्यूटोरियल: C++ टूलचेन कॉन्फ़िगर करना
- C++ के नियमों के साथ इंटिग्रेट करना
सबसे सही तरीके
Bazel के सामान्य सबसे सही तरीकों के अलावा, यहां C++ प्रोजेक्ट के लिए सबसे सही तरीके दिए गए हैं.
BUILD फ़ाइलें
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>) का.
- यूनीक्स डायरेक्ट्री के शॉर्टकट का इस्तेमाल करने से बचें. जैसे, - .(मौजूदा डायरेक्ट्री) या- ..(पैरंट डायरेक्ट्री).
- लेगसी या - third_partyकोड के लिए,- cc_libraryनियम के टारगेट पर- include_prefixऔर- strip_include_prefixआर्ग्युमेंट का इस्तेमाल करें. इस तरह के कोड में, प्रोजेक्ट रिपॉज़िटरी के बाहर के फ़ाइल पाथ शामिल करने होते हैं. जैसे, बाहरी रिपॉज़िटरी में शामिल फ़ाइल पाथ के लिए प्रीफ़िक्स की ज़रूरत होती है.
टूलचेन की सुविधाएं
यहां दी गई वैकल्पिक सुविधाओं से, C++ प्रोजेक्ट को बेहतर बनाया जा सकता है. इन्हें चालू करने के लिए, --features कमांड-लाइन फ़्लैग या repo, package या cc_* नियमों के features एट्रिब्यूट का इस्तेमाल किया जा सकता है:
- parse_headersसुविधा की मदद से, C++ कंपाइलर का इस्तेमाल करके, बिल्ट टारगेट और उनकी डिपेंडेंसी में मौजूद सभी हेडर फ़ाइलों को पार्स किया जाता है. हालांकि, उन्हें कंपाइल नहीं किया जाता. ऐसा तब होता है, जब- --process_headers_in_dependenciesफ़्लैग का इस्तेमाल किया जाता है. इससे सिर्फ़ हेडर वाली लाइब्रेरी में मौजूद समस्याओं का पता लगाया जा सकता है. साथ ही, यह पक्का किया जा सकता है कि हेडर में पूरी जानकारी मौजूद हो और वे शामिल किए जाने के क्रम से अलग हों.
- layering_checkसुविधा यह पक्का करती है कि टारगेट में सिर्फ़ ऐसे हेडर शामिल हों जो उनकी डायरेक्ट डिपेंडेंसी से मिले हों. डिफ़ॉल्ट टूलचेन, Linux पर इस सुविधा के साथ काम करता है. इसके लिए,- clangको कंपाइलर के तौर पर इस्तेमाल किया जाता है.