สําเนาทั่วไป

ยูทิลิตีสำหรับการคอมไพล์ C++, การลิงก์ และการสร้างบรรทัดคำสั่ง

สมาชิก

action_is_enabled

bool cc_common.action_is_enabled(feature_configuration, action_name)

แสดงค่า "จริง" หากเปิดใช้ action_config ที่กำหนดในการกำหนดค่าฟีเจอร์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name ต้องระบุ
ชื่อของ action_config

CcToolchainInfo

Provider cc_common.CcToolchainInfo

คีย์ที่ใช้เพื่อเรียกข้อมูลผู้ให้บริการที่มีข้อมูลเกี่ยวกับชุดเครื่องมือ C++ ที่ใช้อยู่

compile

tuple cc_common.compile(actions, feature_configuration, cc_toolchain, srcs=[], public_hdrs=[], private_hdrs=[], includes=[], quote_includes=[], system_includes=[], framework_includes=[], defines=[], local_defines=[], include_prefix='', strip_include_prefix='', user_compile_flags=[], compilation_contexts=[], name, disallow_pic_outputs=False, disallow_nopic_outputs=False, additional_inputs=[], grep_includes=None)

ควรใช้สำหรับการคอมไพล์ C++ แสดงผล Tuple ของ (CompilationContext, CcCompilationOutputs)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
actions ออบเจ็กต์
actions ที่จำเป็น
feature_configuration ต้องระบุ
feature_configuration เพื่อค้นหา
cc_toolchain ต้องระบุ
ผู้ให้บริการ CcToolchainInfo
srcs ค่าเริ่มต้น = []
รายการไฟล์ต้นฉบับที่จะรวบรวม
public_hdrs ค่าเริ่มต้น = []
รายการส่วนหัวที่จำเป็นสำหรับการรวบรวม src และอาจรวมโดยกฎที่เกี่ยวข้องอย่างทางอ้อม
private_hdrs ค่าเริ่มต้น = []
รายการส่วนหัวที่จำเป็นสำหรับการรวบรวม src และ "ไม่" เพื่อรวมโดยกฎที่เกี่ยวข้อง
includes ค่าเริ่มต้น = []
เส้นทางการค้นหาไฟล์ส่วนหัวที่อ้างอิงทั้งวงเล็บมุมและเครื่องหมายคำพูด โดยทั่วไปจะใช้ -I. เผยแพร่ให้กับผู้อยู่ในความอุปถัมภ์อย่างไม่เป็นทางการ
quote_includes ค่าเริ่มต้น = []
เส้นทางการค้นหาไฟล์ส่วนหัวที่อ้างอิงโดยเครื่องหมายคำพูด เช่น #include "foo/bar/header.h" ซึ่งอาจสัมพันธ์กับรูทของผู้บริหารหรือค่าสัมบูรณ์ โดยปกติแล้วจะผ่านด้วย -iquote เผยแพร่ให้กับผู้อยู่ในความอุปถัมภ์อย่างไม่เป็นทางการ
system_includes ค่าเริ่มต้น = []
เส้นทางการค้นหาสำหรับไฟล์ส่วนหัวที่อ้างอิงโดยวงเล็บมุม เช่น #include <foo/bar/header.h> เส้นทางดังกล่าวอาจสัมพัทธ์กับรูทของปฏิบัติการหรือเวอร์ชันสัมบูรณ์ โดยทั่วไปจะผ่านด้วย -isystem เผยแพร่ให้กับผู้อยู่ในความอุปถัมภ์อย่างไม่เป็นทางการ
framework_includes ค่าเริ่มต้น = []
เส้นทางการค้นหาไฟล์ส่วนหัวจากเฟรมเวิร์กของ Apple ซึ่งอาจสัมพันธ์กับรูทของผู้บริหารหรือค่าสัมบูรณ์ โดยทั่วไปจะผ่านด้วย -F เผยแพร่ให้กับผู้อยู่ในความอุปถัมภ์อย่างไม่เป็นทางการ
defines ค่าเริ่มต้น = []
ชุดการกำหนดที่จำเป็นต่อการคอมไพล์เป้าหมายนี้ คำจำกัดความแต่ละรายการเป็นสตริง เผยแพร่ให้กับผู้อยู่ในความอุปถัมภ์อย่างไม่เป็นทางการ
local_defines ค่าเริ่มต้น = []
ชุดการกำหนดที่จำเป็นต่อการคอมไพล์เป้าหมายนี้ คำจำกัดความแต่ละรายการเป็นสตริง ไม่ได้แพร่กระจายไปยังผู้อยู่ในความอุปถัมภ์แบบทางอ้อม
include_prefix default = ''
คำนำหน้าที่จะเพิ่มไปยังเส้นทางของส่วนหัวของกฎนี้ เมื่อตั้งค่าแล้ว ส่วนหัวในแอตทริบิวต์ hdrs ของกฎนี้จะเข้าถึงได้คือค่าของแอตทริบิวต์นี้ที่เพิ่มข้างหน้าเส้นทางที่สัมพันธ์กับที่เก็บ คำนำหน้าในแอตทริบิวต์ Strip_include_prefix จะถูกนำออกก่อนที่จะเพิ่มคำนำหน้านี้
strip_include_prefix default = ''
คำนำหน้าที่จะตัดออกจากเส้นทางของส่วนหัวของกฎนี้ เมื่อตั้งค่าแล้ว ส่วนหัวในแอตทริบิวต์ hdrs ของกฎนี้จะเข้าถึงได้ในเส้นทางของตนโดยตัดคำนำหน้านี้ออกไป หากเป็นเส้นทางแบบสัมพัทธ์ ระบบจะถือว่าค่านี้เป็นแบบที่สัมพันธ์กับแพ็กเกจ หากเป็นเส้นทางสัมบูรณ์ ก็จะเข้าใจว่าเป็นเส้นทางที่เกี่ยวข้องกับที่เก็บ คำนำหน้าในแอตทริบิวต์ include_prefix จะเพิ่มเข้ามาหลังจากนำคำนำหน้านี้ออก
user_compile_flags ค่าเริ่มต้น = []
รายการตัวเลือกการรวบรวมเพิ่มเติม
compilation_contexts ค่าเริ่มต้น = []
ส่วนหัวจากการอ้างอิงที่ใช้สำหรับการรวบรวม
name ต้องระบุ
ใช้เพื่อตั้งชื่ออาร์ติแฟกต์เอาต์พุตของการดำเนินการที่เมธอดนี้สร้างขึ้น โปรดดูอาร์กิวเมนต์ "main_output" ด้วย
disallow_pic_outputs ค่าเริ่มต้น = เท็จ
ระบุว่าควรสร้างเอาต์พุต PIC หรือไม่
disallow_nopic_outputs ค่าเริ่มต้น = เท็จ
ระบุว่าควรสร้างเอาต์พุต NOPIC หรือไม่
additional_inputs ค่าเริ่มต้น = []
รายการไฟล์เพิ่มเติมที่จำเป็นสำหรับการรวบรวม src
grep_includes File; or None; ค่าเริ่มต้น = ไม่มี

configure_features

FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])

สร้างอินสแตนซ์ feature_configuration ต้องการส่วนย่อยการกำหนดค่า cpp

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
ctx ctx; or None; default = ไม่มี
บริบทของกฎ
cc_toolchain จำเป็น
cc_toolchain ซึ่งเรากำหนดค่าฟีเจอร์
language string; or None; ค่าเริ่มต้น = ไม่มี
ภาษาที่จะกำหนดค่าสำหรับ c++ หรือ objc (c++ เริ่มต้น)
requested_features ค่าเริ่มต้น = []
รายการฟีเจอร์ที่จะเปิดใช้
unsupported_features ค่าเริ่มต้น = []
รายการฟีเจอร์ที่กฎปัจจุบันไม่รองรับ

create_cc_toolchain_config_info

CcToolchainConfigInfo cc_common.create_cc_toolchain_config_info(ctx, features=[], action_configs=[], artifact_name_patterns=[], cxx_builtin_include_directories=[], toolchain_identifier, host_system_name=None, target_system_name, target_cpu, target_libc, compiler, abi_version=None, abi_libc_version=None, tool_paths=[], make_variables=[], builtin_sysroot=None, cc_target_os=None)

สร้างผู้ให้บริการ CcToolchainConfigInfo

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
ctx ต้องระบุ
บริบทของกฎ
features ค่าเริ่มต้น = []

มีข้อกำหนดการแจ้งว่าไม่เหมาะสมทั้งหมดสำหรับฟีเจอร์เดียว

อาร์กิวเมนต์

name: ชื่อของสถานที่ คุณจะแนะนำฟีเจอร์ได้โดยไม่ต้องเปลี่ยนแปลง Bazel เลยด้วยการเพิ่มส่วน "feature" ลงใน Toolchain และเพิ่มสตริงที่สอดคล้องกันเป็นฟีเจอร์ในไฟล์ BUILD

เปิดใช้อยู่: หากเป็น "จริง" ระบบจะเปิดใช้ฟีเจอร์นี้เว้นแต่ประเภทกฎจะทำเครื่องหมายอย่างชัดแจ้งว่า "ไม่รองรับ"

Flag_sets: รายการ FlagSet - หากเปิดใช้ฟีเจอร์ที่กำหนด ระบบจะใช้ชุดแฟล็กสำหรับการดำเนินการที่ระบุไว้

env_sets: รายการ EnvSet - หากเปิดใช้ฟีเจอร์ที่กำหนด ระบบจะนำชุด env ไปใช้กับการดำเนินการที่ระบุไว้

ต้องการ: รายการชุดฟีเจอร์ที่กำหนดว่าเมื่อใดที่ Toolchain จะรองรับฟีเจอร์นี้ ระบบจะรองรับฟีเจอร์นี้หากชุดฟีเจอร์ใดก็ตามมีผลโดยสมบูรณ์ กล่าวคือเมื่อเปิดใช้ฟีเจอร์ทั้งหมดของชุดฟีเจอร์ หากไม่ใส่ "requires" แสดงว่าระบบรองรับฟีเจอร์นี้แยกเป็นอิสระจากกันในกรณีที่มีการเปิดใช้ฟีเจอร์อื่นๆ ตัวอย่างนี้ใช้เพื่อกรองแฟล็กโดยขึ้นอยู่กับโหมดบิลด์ที่เปิดใช้ (opt / Fastbuild / dbg)

โดยนัย: รายการสตริงของฟีเจอร์หรือการกำหนดค่าการทำงานที่เปิดใช้โดยอัตโนมัติเมื่อมีการเปิดใช้ฟีเจอร์นี้ หากไม่สามารถเปิดใช้ฟีเจอร์หรือการกำหนดค่าการดำเนินการโดยนัยได้ ฟีเจอร์นี้จะไม่ได้เปิดใช้ (โดยไม่แจ้ง) ด้วยเช่นกัน

ให้: รายชื่อของชื่อที่สถานที่นี้ขัดแย้งกัน

คุณจะเปิดใช้ฟีเจอร์ไม่ได้หาก:
- 'provides' มีชื่อของฟีเจอร์หรือการกำหนดค่าการดำเนินการอื่นที่เราต้องการเปิดใช้
- 'provided' มีค่าเหมือนกับ 'provided' ในฟีเจอร์หรือการกำหนดค่าการดำเนินการอื่นที่เราต้องการเปิดใช้ ใช้ฟีเจอร์นี้เพื่อให้มั่นใจว่าฟีเจอร์ที่ใช้ร่วมกันไม่ได้เปิดใช้งานพร้อมกันโดยไม่ได้ตั้งใจ ทำให้พบข้อผิดพลาดของคอมไพเลอร์ที่วินิจฉัยได้ยาก
action_configs ค่าเริ่มต้น = []

การกำหนดค่าการทำงานจะสอดคล้องกับการทำงาน Bazel และอนุญาตให้เลือกเครื่องมือตามฟีเจอร์ที่เปิดใช้งาน การเปิดใช้งานการกำหนดค่าการดำเนินการจะเกิดขึ้นจากความหมายเดียวกับฟีเจอร์ต่างๆ กล่าวคือ ฟีเจอร์สามารถ "ต้องการ" หรือ "กำหนด" การกำหนดค่าการดำเนินการได้ในลักษณะเดียวกันกับที่จะทำกับอีกฟีเจอร์หนึ่ง

อาร์กิวเมนต์

action_name: ชื่อของการทำงาน Bazel ที่การกำหนดค่านี้ใช้ เช่น "c-commerce" หรือ "c-module-โฆษณาแสดง"

เปิดใช้: หากเป็น "จริง" ระบบจะเปิดใช้การดำเนินการนี้ เว้นแต่ประเภทกฎจะทำเครื่องหมายอย่างชัดแจ้งว่า "ไม่รองรับ"

เครื่องมือ: เครื่องมือที่ใช้กับการดำเนินการจะเป็นเครื่องมือแรกที่มีชุดฟีเจอร์ที่ตรงกับการกำหนดค่าฟีเจอร์ ระบบจะแสดงข้อผิดพลาดหากไม่มีเครื่องมือที่ตรงกับการกำหนดค่าฟีเจอร์ที่ระบุไว้ ด้วยเหตุนี้ คุณจึงควรมอบเครื่องมือเริ่มต้นที่มีชุดฟีเจอร์ที่ว่างเปล่า

Flag_sets: หากเปิดใช้การกำหนดค่าการดำเนินการที่กำหนด ระบบจะใช้ชุดแฟล็กกับการดำเนินการที่เกี่ยวข้อง

โดยนัย: รายการฟีเจอร์หรือการกำหนดค่าการดำเนินการที่เปิดใช้โดยอัตโนมัติเมื่อเปิดใช้การกำหนดค่าการดำเนินการนี้ หากเปิดใช้ฟีเจอร์หรือการกำหนดค่าการดำเนินการโดยนัยไม่ได้ ระบบจะเปิดใช้การกำหนดค่าการดำเนินการนี้ (โดยอัตโนมัติ) เช่นกัน

artifact_name_patterns ค่าเริ่มต้น = []

ชื่อสำหรับอาร์ติแฟกต์ของหมวดหมู่ของอาร์ติแฟกต์อินพุตหรือเอาต์พุตหนึ่งๆ สำหรับการดำเนินการ

อาร์กิวเมนต์

category_name: หมวดหมู่ของอาร์ติแฟกต์ที่ตัวเลือกนี้ใช้กับ ฟิลด์นี้จะถูกนำไปเปรียบเทียบกับรายการหมวดหมู่ที่กำหนดไว้ใน Bazel ตัวอย่างหมวดหมู่มี "linked_output" หรืออาร์ติแฟกต์สำหรับการเลือกนี้ ร่วมกับส่วนขยายที่จะใช้ในการสร้างชื่ออาร์ติแฟกต์ตามชื่อเป้าหมาย

ส่วนขยาย: ส่วนขยายสำหรับการสร้างอาร์ติแฟกต์สำหรับการเลือกนี้ ร่วมกับคำนำหน้าจะใช้ในการสร้างชื่ออาร์ติแฟกต์ตามชื่อเป้าหมาย

cxx_builtin_include_directories ค่าเริ่มต้น = []

มีไดเรกทอรีในตัวสำหรับการคอมไพล์ C++ เส้นทางเหล่านี้ควรเป็นเส้นทางเดียวกับที่คอมไพเลอร์ใช้ และโดยทั่วไปจะสัมพันธ์กับรากของ exec

เส้นทางที่คอมไพเลอร์ใช้สามารถกำหนดได้ด้วย "gcc -E -xc++ - -v"

ขณะนี้เราใช้เส้นทาง C++ สำหรับการคอมไพล์ C ด้วย ซึ่งปลอดภัยตราบใดที่ชื่อไม่ปะทะกันระหว่างไฟล์ส่วนหัว C++ และ C

ระบบจะจับคู่เส้นทางสัมพัทธ์กับไดเรกทอรีของไฟล์การกำหนดค่า

ถ้าคอมไพเลอร์มีการสนับสนุน --sysroot เส้นทางเหล่านี้ควรใช้ %sysroot% แทนเส้นทาง include และระบุแอตทริบิวต์ sysroot เพื่อให้ข้อมูลที่จำเป็นในการทำการแทนที่ที่ถูกต้อง

toolchain_identifier ต้องระบุ

ตัวระบุที่ไม่ซ้ำกันของ Toolchain ภายในรุ่น Crosstool ต้องใช้ชื่อนี้เป็นชื่อไดเรกทอรีในเส้นทาง

ซึ่งต้องตรงกับนิพจน์ทั่วไปต่อไปนี้: [a-zA-Z_][\.\- \w]*

host_system_name string; or None; ค่าเริ่มต้น = ไม่มี
ละเว้น
target_system_name ต้องระบุ
ชื่อระบบ GNU
target_cpu จำเป็น
สตริงสถาปัตยกรรมเป้าหมาย
target_libc ต้องระบุ
สตริงเวอร์ชัน libc (เช่น "glibc-2.2.2")
compiler ต้องระบุ
สตริงเวอร์ชันคอมไพเลอร์ (เช่น "gcc-4.1.1")
abi_version string; or None; default = ไม่มี
abi ที่ใช้งานอยู่ ซึ่งเป็นเวอร์ชัน gcc E.g.: "gcc-3.4"
abi_libc_version string; or None; default = ไม่มี
เวอร์ชัน glibc ที่ Abi กำลังใช้อยู่
tool_paths ค่าเริ่มต้น = []

ตำแหน่งของเครื่องมือ

อาร์กิวเมนต์

name: ชื่อเครื่องมือ

เส้นทาง: ตำแหน่งของเครื่องมือ อาจเป็นเส้นทางสัมบูรณ์ (ในกรณีที่ไม่ใช่ Toolchain ที่ไม่แยกออก) หรือเส้นทางที่สัมพันธ์กับแพ็กเกจของ cc_toolchain

make_variables ค่าเริ่มต้น = []
ตัวแปรทำให้เข้าถึงกฎได้
builtin_sysroot string; or None; default = ไม่มี
sysroot ในตัว หากไม่มีแอตทริบิวต์นี้ Bazel ไม่อนุญาตให้ใช้ sysroot อื่น เช่น โดยใช้ตัวเลือก --grte_top
cc_target_os string; or None; ค่าเริ่มต้น = ไม่มี
วัตถุประสงค์ภายในเท่านั้น อย่าใช้

create_compilation_context

CompilationContext cc_common.create_compilation_context(headers=unbound, system_includes=unbound, includes=unbound, quote_includes=unbound, framework_includes=unbound, defines=unbound, local_defines=unbound)

สร้าง CompilationContext

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
headers ค่าเริ่มต้น = ไม่มีการเชื่อมโยง
ชุดของส่วนหัวที่จำเป็นสำหรับคอมไพล์เป้าหมายนี้
system_includes ค่าเริ่มต้น = ไม่มีการเชื่อมโยง
ชุดของเส้นทางการค้นหาสำหรับไฟล์ส่วนหัวที่อ้างอิงโดยวงเล็บมุม เช่น #include <foo/bar/header.h> ค่าเหล่านี้อาจสัมพันธ์กับรูทของการดำเนินการหรือเวอร์ชันสัมบูรณ์ โดยทั่วไปจะผ่านด้วย -isystem
includes ค่าเริ่มต้น = ไม่มีการเชื่อมโยง
ชุดเส้นทางการค้นหาสำหรับไฟล์ส่วนหัวที่อ้างอิงทั้งวงเล็บมุมและเครื่องหมายคำพูด มักส่งผ่านด้วย -I
quote_includes ค่าเริ่มต้น = ไม่มีการเชื่อมโยง
ชุดเส้นทางการค้นหาสำหรับไฟล์ส่วนหัวที่อ้างอิงโดยเครื่องหมายคำพูด เช่น #include "foo/bar/header.h" ซึ่งอาจสัมพันธ์กับรูทของผู้บริหารหรือค่าสัมบูรณ์ โดยปกติแล้วจะผ่านด้วย -iquote
framework_includes ค่าเริ่มต้น = ไม่มีการเชื่อมโยง
ชุดเส้นทางการค้นหาเฟรมเวิร์กสำหรับไฟล์ส่วนหัว (เฉพาะแพลตฟอร์มของ Apple)
defines ค่าเริ่มต้น = unbound
ชุดการกำหนดที่จำเป็นต่อการคอมไพล์เป้าหมายนี้ คำจำกัดความแต่ละรายการเป็นสตริง แพร่ขยายไปสู่ผู้อยู่ในภาวะพึ่งพิง
local_defines ค่าเริ่มต้น = unbound
ชุดการกำหนดที่จำเป็นต่อการคอมไพล์เป้าหมายนี้ คำจำกัดความแต่ละรายการเป็นสตริง ไม่แพร่กระจายไปยังผู้อยู่ในความอุปถัมภ์

create_compilation_outputs

CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)

สร้างออบเจ็กต์เอาต์พุตการคอมไพล์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
objects depset; or None; ค่าเริ่มต้น = ไม่มี
รายการไฟล์ออบเจ็กต์
pic_objects depset; or None; ค่าเริ่มต้น = ไม่มี
รายการไฟล์ออบเจ็กต์รูปภาพ

create_compile_variables

Variables cc_common.create_compile_variables(cc_toolchain, feature_configuration, source_file=None, output_file=None, user_compile_flags=None, include_directories=None, quote_include_directories=None, system_include_directories=None, framework_include_directories=None, preprocessor_defines=None, thinlto_index=None, thinlto_input_bitcode_file=None, thinlto_output_object_file=None, use_pic=False, add_legacy_cxx_options=False, variables_extension=unbound)

แสดงผลตัวแปรที่ใช้สำหรับการดำเนินการคอมไพล์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
cc_toolchain จำเป็น
cc_toolchain สำหรับสร้างตัวแปรบิลด์
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
source_file ค่าเริ่มต้น = ไม่มี
ไฟล์ต้นฉบับที่ไม่บังคับสำหรับการคอมไพล์ โปรดเลือกส่ง source_file ตรงนี้แทนที่จะต้องนำไปต่อท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficiency_command_line เนื่องจากข้อผิดพลาดดังกล่าวจะขึ้นอยู่กับผู้เขียน Toolchain เพื่อที่จะระบุและจัดตำแหน่งแฟล็กของคอมไพเลอร์อย่างเหมาะสม
output_file ค่าเริ่มต้น = ไม่มี
ไฟล์เอาต์พุตเสริมของการคอมไพล์ โปรดเลือกส่ง export_file ที่นี่โดยนำไปต่อท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficiency_command_line เนื่องจากรหัสนั้นอยู่ภายใต้อำนาจของผู้เขียน Toolchain ในการระบุและจัดตำแหน่งแฟล็กของคอมไพเลอร์อย่างเหมาะสม
user_compile_flags sequence of strings; or None; ค่าเริ่มต้น = ไม่มี
รายการแฟล็กการคอมไพล์เพิ่มเติม (Copts)
include_directories depset; or None; ค่าเริ่มต้น = ไม่มี
จำนวนไดเรกทอรีรวม
quote_include_directories depset; or None; ค่าเริ่มต้น = ไม่มี
รายละเอียดใบเสนอราคาจะรวมไดเรกทอรี
system_include_directories depset; or None; ค่าเริ่มต้น = ไม่มี
ความลึกของระบบรวมถึงไดเรกทอรี
framework_include_directories depset; or None; ค่าเริ่มต้น = ไม่มี
ความล่าช้าของเฟรมเวิร์กจะรวมไดเรกทอรี
preprocessor_defines depset; or None; ค่าเริ่มต้น = ไม่มี
ค่าลดการประมวลผลล่วงหน้าที่กำหนด
thinlto_index string; or None; ค่าเริ่มต้น = ไม่มี
เส้นทางไฟล์ดัชนี LTO
thinlto_input_bitcode_file string; or None; ค่าเริ่มต้น = ไม่มี
ไฟล์บิตโค้ดที่ป้อนลงในแบ็กเอนด์ LTO
thinlto_output_object_file string; or None; ค่าเริ่มต้น = ไม่มี
ไฟล์ออบเจ็กต์ที่เป็นเอาต์พุตโดยแบ็กเอนด์ LTO
use_pic default = False
เมื่อ true การคอมไพล์จะสร้างโค้ดอิสระตามตำแหน่ง
add_legacy_cxx_options ค่าเริ่มต้น = เท็จ
ไม่ได้ใช้งาน
variables_extension dict; ค่าเริ่มต้น = ไม่มีการเชื่อมโยง
พจนานุกรมของตัวแปรเพิ่มเติมที่ใช้โดยการดำเนินการคอมไพล์

LibraryToLink cc_common.create_library_to_link(actions, feature_configuration=None, cc_toolchain=None, static_library=None, pic_static_library=None, dynamic_library=None, interface_library=None, pic_objects=unbound, objects=unbound, alwayslink=False, dynamic_library_symlink_path='', interface_library_symlink_path='')

สร้าง LibraryToLink

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
actions ออบเจ็กต์
actions ที่จำเป็น
feature_configuration ค่าเริ่มต้น = ไม่มี
feature_configuration ที่จะค้นหา
cc_toolchain default = ไม่มี
CcToolchainInfo ผู้ให้บริการที่จะใช้
static_library File; or None; ค่าเริ่มต้น = ไม่มี
File ของไลบรารีแบบคงที่ที่จะลิงก์
pic_static_library File; or None; ค่าเริ่มต้น = ไม่มี
File ของคลังภาพแบบคงที่ที่จะลิงก์
dynamic_library File; or None; ค่าเริ่มต้น = ไม่มี
File ของไลบรารีแบบไดนามิกที่จะลิงก์ ใช้สำหรับรันไทม์เสมอและใช้สำหรับการลิงก์หากไม่ผ่าน interface_library
interface_library File; or None; ค่าเริ่มต้น = ไม่มี
File ของไลบรารีอินเทอร์เฟซที่จะลิงก์
pic_objects sequence of Files; ค่าเริ่มต้น = ไม่มีขอบเขต
ขั้นทดลอง อย่าใช้
objects sequence of Files; ค่าเริ่มต้น = ไม่มีขอบเขต
ขั้นทดลอง อย่าใช้
default = False
ต้องการลิงก์ไลบรารี/ออบเจ็กต์แบบคงที่ในบล็อก --whole_archive หรือไม่
string; default = ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีแบบไดนามิกในไดเรกทอรี Solib สตริงว่างเพื่อใช้ค่าเริ่มต้น
default = ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีอินเทอร์เฟซในไดเรกทอรี Solib สตริงว่างเพื่อใช้ค่าเริ่มต้น

Variables cc_common.create_link_variables(cc_toolchain, feature_configuration, library_search_directories=None, runtime_library_search_directories=None, user_link_flags=None, output_file=None, param_file=None, def_file=None, is_using_linker=True, is_linking_dynamic_library=False, must_keep_debug=True, use_test_only_flags=False, is_static_linking_mode=True)

แสดงผลตัวแปรลิงก์ที่ใช้สำหรับการดำเนินการลิงก์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
จำเป็น
cc_toolchain สำหรับสร้างตัวแปรบิลด์
ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
None; or depset; ค่าเริ่มต้น = ไม่มี
จำนวนไดเรกทอรีที่ Linker จะค้นหาไลบรารี ณ เวลาของลิงก์
None; or depset; ค่าเริ่มต้น = ไม่มี
ความคลาดเคลื่อนของไดเรกทอรีที่ตัวโหลดจะค้นหาไลบรารีขณะรันไทม์
None; or sequence; ค่าเริ่มต้น = ไม่มี
รายการแฟล็กลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้น = ไม่มี
เส้นทางของไฟล์เอาต์พุตเพิ่มเติม
default = ไม่มี
เส้นทางไฟล์พารามิเตอร์ที่ไม่บังคับ
default = ไม่มี
เส้นทางของไฟล์ .def (ไม่บังคับ)
ค่าเริ่มต้น = จริง
จริงเมื่อใช้ Linker และเป็นเท็จเมื่อเครื่องมือเก็บ ผู้โทรจะต้องรับผิดชอบในการซิงค์ข้อมูลนี้กับชื่อการดำเนินการที่ใช้ (is_using_linker = True สำหรับการลิงก์ไลบรารีสั่งการหรือไลบรารีแบบไดนามิก, is_using_linker = False สำหรับการเก็บถาวรไลบรารีแบบคงที่)
ค่าเริ่มต้น = เท็จ
เป็น "จริง" เมื่อสร้างไลบรารีแบบไดนามิก และเป็น "เท็จ" เมื่อไลบรารีสั่งการหรือไลบรารีแบบคงที่ ผู้โทรมีหน้าที่ซิงค์ข้อมูลนี้กับชื่อการดำเนินการที่ใช้ ระบบจะนำช่องนี้ออกเมื่อแก้ไข b/65151735 แล้ว
ค่าเริ่มต้น = จริง
เมื่อตั้งค่าเป็น "จริง" Bazel จะแสดงตัวแปร "strip_debug_symbols" ซึ่งมักจะใช้ตัวลิงก์ดังกล่าวในการตัดสัญลักษณ์การแก้ไขข้อบกพร่องออกจากไฟล์เอาต์พุต
ค่าเริ่มต้น = เท็จ
เมื่อตั้งค่าเป็น "จริง" ระบบจะตั้งค่าตัวแปร "is_cc_test"
ค่าเริ่มต้น = จริง
ไม่ได้ใช้งาน

create_linker_input

LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)

สร้าง LinkerInput

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
owner ต้องระบุ
ป้ายกำกับของเป้าหมายที่สร้างไฟล์ทั้งหมดที่ใช้ในอินพุตนี้
libraries None; or depset ค่าเริ่มต้น = ไม่มี
รายการ LibraryToLink
None; or depset of strings; or sequence of strings; ค่าเริ่มต้น = ไม่มี
มีการส่งแฟล็กลิงก์ของผู้ใช้เป็นสตริง ยอมรับ [String], [[String]] หรือ depset(String) เราไม่แนะนำให้ใช้ทางเลือกหลัง เนื่องจากแอตทริบิวต์นี้ใช้เพื่อจุดประสงค์ด้านความเข้ากันได้เท่านั้น และจะลดความซ้ำซ้อน หากคุณต้องการเผยแพร่ user_link_flags ผ่าน depsets() ที่ไม่แบนราบ ให้ใส่ข้อความเหล่านั้นใน LinkerInput เพื่อไม่ให้มีการแยกพารามิเตอร์นี้จนกว่าจะสิ้นสุด
additional_inputs None; or depset; ค่าเริ่มต้น = ไม่มี
หากต้องการข้อมูลเพิ่มเติมในการดำเนินการลิงก์ เช่น สคริปต์การลิงก์

create_linking_context

LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)

สร้าง LinkingContext

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
linker_inputs None; or depset; ค่าเริ่มต้น = ไม่มี
ความลึกของ LinkerInput
None; or sequence ค่าเริ่มต้น = ไม่มี
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพาสิ่งนี้ ถูกปิดใช้กับ --+incompatible_require_linker_input_cc_api ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนําออกที่กำลังจะเกิดขึ้น
รายการ LibraryToLink
None; or sequence ค่าเริ่มต้น = ไม่มี
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพาสิ่งนี้ ถูกปิดใช้กับ --+incompatible_require_linker_input_cc_api ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนําออกที่กำลังจะเกิดขึ้น
รายการแฟล็กลิงก์ผู้ใช้ที่ส่งผ่านเป็นสตริง
additional_inputs None; or sequence ค่าเริ่มต้น = ไม่มี
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพาสิ่งนี้ ถูกปิดใช้กับ --+incompatible_require_linker_input_cc_api ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนําออกที่กำลังจะเกิดขึ้น
สำหรับป้อนข้อมูลเพิ่มเติมในการดำเนินการลิงก์ เช่น การลิงก์สคริปต์

create_linking_context_from_compilation_outputs

tuple cc_common.create_linking_context_from_compilation_outputs(actions, feature_configuration, cc_toolchain, compilation_outputs, user_link_flags=[], linking_contexts=[], name, language='c++', alwayslink=False, additional_inputs=[], disallow_static_libraries=False, disallow_dynamic_library=False, grep_includes=None)

ควรใช้สำหรับการสร้างกฎไลบรารีที่สามารถเผยแพร่ข้อมูลดาวน์สตรีม เพื่อที่จะลิงก์ในภายหลังโดยกฎระดับบนสุดที่จะลิงก์แบบสับเปลี่ยนเพื่อสร้างไลบรารีสั่งการหรือไลบรารีแบบไดนามิก แสดงผล Tuple ของ (CcLinkingContext, CcLinkingOutputs)

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
actions ออบเจ็กต์
actions ที่จำเป็น
feature_configuration ต้องระบุ
feature_configuration เพื่อค้นหา
cc_toolchain ต้องระบุ
ผู้ให้บริการ CcToolchainInfo
compilation_outputs จำเป็น
เอาต์พุตการคอมไพล์ที่มีไฟล์ออบเจ็กต์ที่จะลิงก์
ค่าเริ่มต้น = []
รายการตัวเลือกการลิงก์เพิ่มเติม
linking_contexts ค่าเริ่มต้น = []
ไลบรารีจากทรัพยากร Dependency ไลบรารีเหล่านี้จะลิงก์กับอาร์ติแฟกต์เอาต์พุตของการเรียกใช้ link() ไม่ว่าจะเป็นไบนารีหรือไลบรารี
name ต้องระบุ
ใช้เพื่อตั้งชื่ออาร์ติแฟกต์เอาต์พุตของการดำเนินการที่เมธอดนี้สร้างขึ้น
language ค่าเริ่มต้น = 'c++'
ตอนนี้รองรับเฉพาะ C++ อย่าใช้พารามิเตอร์นี้
default = False
ระบุว่าไลบรารีนี้ควรลิงก์เสมอหรือไม่
additional_inputs ค่าเริ่มต้น = []
ใช้อินพุตเพิ่มเติมในการดำเนินการลิงก์ เช่น สคริปต์การลิงก์
disallow_static_libraries default = False
ระบุว่าควรสร้างไลบรารีแบบคงที่หรือไม่
disallow_dynamic_library default = False
ระบุว่าควรสร้างไลบรารีแบบไดนามิกหรือไม่
grep_includes File; or None; ค่าเริ่มต้น = ไม่มี

do_not_use_tools_cpp_compiler_present

None cc_common.do_not_use_tools_cpp_compiler_present

อย่าใช้ช่องนี้ เนื่องจากมีจุดประสงค์เพียงเพื่อช่วยในการย้ายข้อมูลจาก config_setting.values{'จะแสดงโฆษณา') ไปยัง config_settings.flag_values{'@bazel_tools//tools/cpp:processing'}

get_environment_variables

dict cc_common.get_environment_variables(feature_configuration, action_name, variables)

แสดงผลตัวแปรสภาพแวดล้อมที่จะตั้งค่าสำหรับการทำงานที่กำหนด

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)
variables ต้องระบุ
ตัวแปรบิลด์ที่จะใช้สําหรับการขยายเทมเพลต

get_execution_requirements

sequence cc_common.get_execution_requirements(feature_configuration, action_name)

แสดงผลข้อกำหนดการดำเนินการสำหรับการดำเนินการที่ระบุ

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)

get_memory_inefficient_command_line

sequence cc_common.get_memory_inefficient_command_line(feature_configuration, action_name, variables)

แสดงผลค่าสถานะบรรทัดคำสั่งที่แยกสำหรับการดำเนินการที่ระบุ โดยใช้ตัวแปรที่กำหนดสำหรับการขยาย ทำให้ชุดที่ฝังอยู่คงที่และไม่ควรนำมาใช้ หรืออย่างน้อยก็ไม่ควรใช้การวิเคราะห์นอกระบบ ทำงานเกี่ยวกับฟังก์ชันประหยัดหน่วยความจำที่ส่งคืน Args อยู่ทำงานอยู่

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)
variables ต้องระบุ
ตัวแปรบิลด์ที่จะใช้สําหรับการขยายเทมเพลต

get_tool_for_action

string cc_common.get_tool_for_action(feature_configuration, action_name)

แสดงผลเส้นทางเครื่องมือสำหรับการทำงานที่ระบุ

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)

is_enabled

bool cc_common.is_enabled(feature_configuration, feature_name)

แสดงผลเป็น "จริง" หากเปิดใช้ฟีเจอร์ที่กำหนดในการกำหนดค่าฟีเจอร์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
feature_name ต้องระบุ
ชื่อฟีเจอร์

CcLinkingOutputs cc_common.link(actions, feature_configuration, cc_toolchain, compilation_outputs=None, user_link_flags=[], linking_contexts=[], name, language='c++', output_type='executable', link_deps_statically=True, stamp=0, additional_inputs=[], grep_includes=None, additional_outputs=unbound)

ควรใช้สำหรับการลิงก์ C++ แบบสกรรม

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
actions ออบเจ็กต์
actions ที่จำเป็น
feature_configuration ต้องระบุ
feature_configuration เพื่อค้นหา
cc_toolchain ต้องระบุ
ผู้ให้บริการ CcToolchainInfo
compilation_outputs CcCompilationOutputs; or None; ค่าเริ่มต้น = ไม่มี
เอาต์พุตการคอมไพล์ที่มีไฟล์ออบเจ็กต์ที่จะลิงก์
ค่าเริ่มต้น = []
รายการตัวเลือก Linker เพิ่มเติม
linking_contexts ค่าเริ่มต้น = []
การลิงก์บริบทจากการอ้างอิงที่จะลิงก์กับบริบทการลิงก์ที่สร้างโดยกฎนี้
name ต้องระบุ
ใช้เพื่อตั้งชื่ออาร์ติแฟกต์เอาต์พุตของการดำเนินการที่เมธอดนี้สร้างขึ้น
language ค่าเริ่มต้น = 'c++'
ตอนนี้รองรับเฉพาะ C++ อย่าใช้พารามิเตอร์นี้
output_type default = "executable"
อาจเป็น "executable" หรือ "dynamic_library" ก็ได้
ค่าเริ่มต้น = จริง
True เพื่อลิงก์ Dependencies แบบคงที่หรือ "False แบบไดนามิก"
stamp ค่าเริ่มต้น = 0
ระบุว่าจะรวมข้อมูลบิลด์ในไฟล์ปฏิบัติการที่ลิงก์หรือไม่ หาก export_type เป็น "executable" หากเป็น 1 ระบบจะรวมข้อมูลบิลด์เสมอ หากเป็น 0 (ระบบจะยกเว้นข้อมูลบิลด์เริ่มต้นเสมอ หากเป็น -1 ให้ใช้การทำงานเริ่มต้นซึ่งอาจถูกตั้งค่าสถานะ --[no]samp;[no] ลบล้าง ไม่ควรตั้งค่านี้ (หรือตั้งค่าเป็น 0) เมื่อสร้างเอาต์พุตสั่งการสำหรับกฎการทดสอบ
additional_inputs sequence; or depset; ค่าเริ่มต้น = []
ใช้ระบุข้อมูลเพิ่มเติมในการดำเนินการลิงก์ เช่น ลิงก์สคริปต์
grep_includes File; or None; ค่าเริ่มต้น = ไม่มี
additional_outputs sequence; ค่าเริ่มต้น = ยกเลิกการเชื่อมโยง
หากต้องการเอาต์พุตเพิ่มเติมสำหรับการดำเนินการลิงก์ เช่น ไฟล์แผนที่

merge_cc_infos

CcInfo cc_common.merge_cc_infos(direct_cc_infos=[], cc_infos=[])

รวม CcInfo หลายรายการเข้าด้วยกันเป็นรายการเดียว

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
direct_cc_infos ค่าเริ่มต้น = []
รายการCcInfoที่จะผสานรวม โดยช่องโดยตรงของผู้ให้บริการที่แสดงผลจะส่งออกส่วนหัว
cc_infos ค่าเริ่มต้น = []
รายการ CcInfo ที่จะผสานรวม ซึ่งจะไม่ส่งออกส่วนหัวโดยช่องโดยตรงจากผู้ให้บริการที่ส่งกลับ

merge_compilation_contexts

CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])

รวม CompilationContexts หลายรายการเข้าด้วยกันเป็นรายการเดียว

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
compilation_contexts ค่าเริ่มต้น = []
รายการCompilationContextsที่จะผสาน ส่วนหัวของแต่ละบริบทจะส่งออกโดยช่องโดยตรงในผู้ให้บริการที่แสดงผล

merge_compilation_outputs

CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])

ผสานเอาต์พุตการคอมไพล์

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
compilation_outputs ค่าเริ่มต้น = []