หน้านี้มีแหล่งข้อมูลที่ช่วยให้คุณใช้ Bazel กับโปรเจ็กต์ C++ ได้ ซึ่งจะลิงก์ไปยังบทแนะนำ การสร้างกฎ และข้อมูลอื่นๆ ที่เกี่ยวข้องกับการสร้างโปรเจ็กต์ C++ ด้วย Bazel โดยเฉพาะ
การทำงานร่วมกับ Bazel
แหล่งข้อมูลต่อไปนี้จะช่วยคุณในการทำงานร่วมกับ Bazel ในโปรเจ็กต์ C++
- บทแนะนำ: การสร้างโปรเจ็กต์ C++
- กรณีการใช้งานทั่วไปของ C++
- กฎ C/C++
- การกำหนดค่า Toolchain ของ C++
- บทแนะนำ: การกำหนดค่าเชนเครื่องมือ C++
- การผสานรวมกับกฎ C++
แนวทางปฏิบัติแนะนำ
นอกเหนือจากแนวทางปฏิบัติแนะนำทั่วไปของ Bazel แล้ว ด้านล่างนี้คือแนวทางปฏิบัติแนะนำสำหรับโปรเจ็กต์ C++ ด้วย
ไฟล์ BUILD
ทำตามหลักเกณฑ์ด้านล่างเมื่อสร้างไฟล์ BUILD
ไฟล์
BUILD
แต่ละไฟล์ควรมีเป้าหมายกฎcc_library
1 เป้าหมายต่อหน่วยการคอมไพล์ในไดเรกทอรีคุณควรปรับไลบรารี C++ ให้ละเอียดที่สุดเท่าที่จะทำได้ เพื่อเพิ่มส่วนเพิ่มสูงสุดและโหลดบิลด์พร้อมกัน
หากมีไฟล์ต้นฉบับใน
srcs
ให้ตั้งชื่อไลบรารีเหมือนกับชื่อไฟล์ C++ ไลบรารีนี้ควรมีไฟล์ C++ ไฟล์ส่วนหัวที่ตรงกันทั้งหมด และทรัพยากร Dependency โดยตรงของไลบรารี เช่น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
เดิมหรือโค้ดthird_party
ที่ต้องมีการชี้ไปยังที่เก็บโปรเจ็กต์ด้วย เช่น ที่เก็บภายนอกที่ต้องมีคำนำหน้า ให้ใช้อาร์กิวเมนต์include_prefix
และstrip_include_prefix
ในเป้าหมายกฎcc_library