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