หน้านี้มีแหล่งข้อมูลที่จะช่วยให้คุณใช้ Bazel กับโปรเจ็กต์ C++ ได้ ลิงก์ ไปยังบทแนะนำ สร้างกฎ และข้อมูลอื่นๆ เฉพาะสำหรับการสร้าง C++ กับ Bazel
การทำงานกับ Bazel
แหล่งข้อมูลต่อไปนี้จะช่วยคุณในการทำงานกับ Bazel ในโปรเจ็กต์ C++
- บทแนะนำ: การสร้างโปรเจ็กต์ C++
- Use Case ทั่วไปของ C++
- กฎ C/C++
- ห้องสมุดที่จำเป็น
- การกำหนดค่า Toolchain ของ C++
- บทแนะนำ: การกำหนดค่าเครื่องมือเชน C++
- การผสานรวมกับกฎ C++
แนวทางปฏิบัติแนะนำ
นอกเหนือจากแนวทางปฏิบัติแนะนำทั่วไปของ Bazel แล้ว ยังมีข้อมูลต่อไปนี้ ให้กับโครงการ C++ โดยเฉพาะ
สร้างไฟล์
ทำตามหลักเกณฑ์ด้านล่างเมื่อสร้างไฟล์ BUILD
ไฟล์
BUILD
แต่ละไฟล์ควรมีcc_library
1 รายการ เป้าหมายกฎต่อหน่วยคอมไพล์ในไดเรกทอรีคุณควรอธิบายไลบรารี C++ อย่างละเอียด เพื่อเพิ่มส่วนเพิ่มสูงสุดและขนานไปกับบิลด์
หากมีไฟล์แหล่งที่มาไฟล์เดียวใน
srcs
ให้ตั้งชื่อไลบรารีเหมือนกับ ในชื่อไฟล์ C++ ไลบรารีนี้ควรมีไฟล์ C++ ถ้ามี ไฟล์ส่วนหัว และการอ้างอิงโดยตรงของไลบรารี เช่นcc_library( name = "mylib", srcs = ["mylib.cc"], hdrs = ["mylib.h"], deps = [":lower-level-lib"] )
ใช้เป้าหมายกฎ
cc_test
1 รายการต่อเป้าหมายcc_library
ในไฟล์ ตั้งชื่อ กำหนดเป้าหมาย[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