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

รายงานปัญหา ดูแหล่งที่มา

ยูทิลิตีสำหรับการคอมไพล์ 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=[])

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

พารามิเตอร์

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

configure_features

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
ctx ctx หรือ None ค่าเริ่มต้นคือ None
บริบทของกฎ
cc_toolchain จำเป็น
cc_toolchain ที่เรากำหนดค่าฟีเจอร์
language string หรือ None; ค่าเริ่มต้นคือ 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)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
ctx จำเป็น
บริบทของกฎ
features ค่าเริ่มต้นคือ []
มีข้อกำหนดการแจ้งว่าไม่เหมาะสมทั้งหมดสำหรับฟีเจอร์เดียว

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

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

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

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

env_sets: รายการ EnvSet หากเปิดใช้ฟีเจอร์ที่กำหนด ระบบจะนำชุดสภาพแวดล้อมไปใช้กับการดำเนินการที่ระบุไว้

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

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

provides: รายชื่อชื่อที่ฟีเจอร์นี้ขัดแย้งกับรายการ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

toolchain_identifier ต้องระบุ

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

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

host_system_name string หรือ None ค่าเริ่มต้นคือ None
ละเว้น
target_system_name ต้องระบุ
ชื่อระบบ GNU
target_cpu ต้องระบุ
สตริงสถาปัตยกรรมเป้าหมาย
target_libc ต้องระบุ
สตริงเวอร์ชัน libc (เช่น "glibc-2.2.2") หากสตริงคือ "macosx" ระบบจะถือว่าแพลตฟอร์มเป็น MacOS มิฉะนั้น Linux
compiler ต้องระบุ
สตริงคอมไพเลอร์ (เช่น "gcc") คอมไพเลอร์ของ Toolchain ปัจจุบันแสดงค่าแฟล็ก "@bazel_tools//tools/cpp:คอมไพเลอร์ (คอมไพเลอร์_flag)" แล้ว เป้าหมายที่ต้องใช้แฟล็กเฉพาะสำหรับคอมไพเลอร์สามารถใช้ config_settings ใน https://github.com/bazelbuild/rules_cc/blob/main/cc/ซอยคอมไพเลอร์/BUILD ในคำสั่ง select() หรือสร้าง config_setting ที่กำหนดเองหากการตั้งค่าที่มีอยู่ไม่เพียงพอ
abi_version string หรือ None ค่าเริ่มต้นคือ None
abi ที่ใช้งานอยู่ ซึ่งเป็นเวอร์ชัน gcc E.g.: "gcc-3.4"
abi_libc_version string หรือ None ค่าเริ่มต้นคือ None
เวอร์ชัน glibc ที่ Abi กำลังใช้
tool_paths ค่าเริ่มต้นคือ[]
ตำแหน่งเครื่องมือ

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

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

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

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

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

create_compilation_outputs

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
objects depset หรือ None ค่าเริ่มต้นคือ None
รายการไฟล์ออบเจ็กต์
pic_objects depset หรือ None ค่าเริ่มต้นคือ 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 ค่าเริ่มต้นคือ None
ไฟล์แหล่งที่มาที่ไม่บังคับสําหรับการรวบรวม โปรดส่ง source_file ที่นี่โดยนำไปต่อท้ายบรรทัดคำสั่งที่สร้างขึ้นจาก cc_common.get_memory_inefficiency_command_line เนื่องจากจะอยู่ในอำนาจของผู้เขียน Toolchain ในการระบุและจัดตำแหน่งแฟล็กคอมไพเลอร์อย่างเหมาะสม
output_file ค่าเริ่มต้นคือ None
ไฟล์เอาต์พุตเสริมของการคอมไพล์ โปรดเลือกส่ง export_file ที่นี่โดยนำไปต่อท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficiency_command_line เนื่องจากจะอยู่ในอำนาจของผู้เขียน Toolchain ในการระบุและจัดตำแหน่งแฟล็กคอมไพเลอร์อย่างเหมาะสม
user_compile_flags ลำดับของสตริงหรือ None ค่าเริ่มต้นคือ None
รายการแฟล็กการคอมไพล์เพิ่มเติม (copts)
include_directories depset หรือ None โดยค่าเริ่มต้นคือ None
Depset ของไดเรกทอรี include
quote_include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset of quote รวมไดเรกทอรี
system_include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset of System จะรวมไดเรกทอรี
framework_include_directories depset หรือ None โดยค่าเริ่มต้นคือ None
Depset of Framework รวมไดเรกทอรีด้วย
preprocessor_defines depset หรือ None ค่าเริ่มต้นคือ None
Depset of Preprocessor
thinlto_index string หรือ None ค่าเริ่มต้นคือ None
เส้นทางไฟล์ดัชนี LTO
thinlto_input_bitcode_file string หรือ None ค่าเริ่มต้นคือ None
ไฟล์บิตโค้ดที่ป้อนลงในแบ็กเอนด์ LTO
thinlto_output_object_file string หรือ None ค่าเริ่มต้นคือ None
ไฟล์ออบเจ็กต์ที่เป็นเอาต์พุตโดยแบ็กเอนด์ LTO
use_pic ค่าเริ่มต้นคือ False
เมื่อเป็น true การคอมไพล์จะสร้างโค้ดอิสระสำหรับตำแหน่ง
add_legacy_cxx_options ค่าเริ่มต้นคือ False
ไม่ได้ใช้งาน
variables_extension dict ค่าเริ่มต้นคือ unbound
เป็นพจนานุกรมของตัวแปรเพิ่มเติมที่ใช้โดยการดำเนินการคอมไพล์

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 การค้นหาจะมีค่าเริ่มต้นเป็น None
feature_configuration
cc_toolchain ค่าเริ่มต้นคือ None
CcToolchainInfo ผู้ให้บริการ
static_library ไฟล์ หรือ None ค่าเริ่มต้นคือ None
File ของไลบรารีแบบคงที่ที่จะลิงก์
pic_static_library ไฟล์ หรือ None ค่าเริ่มต้นคือ None
File ของคลังภาพแบบคงที่ที่จะลิงก์
dynamic_library ไฟล์ หรือ None ค่าเริ่มต้นคือ None
File ของไลบรารีแบบไดนามิกที่จะลิงก์ ใช้สำหรับรันไทม์เสมอและใช้สำหรับการลิงก์หากไม่ส่ง interface_library
interface_library ไฟล์ หรือ None ค่าเริ่มต้นคือ None
File ของไลบรารีอินเทอร์เฟซที่จะลิงก์
pic_objects ลำดับของไฟล์ ค่าเริ่มต้นคือ unbound
ทดลอง อย่าใช้
objects ลำดับของไฟล์ ค่าเริ่มต้นคือ unbound
ทดลอง อย่าใช้
ค่าเริ่มต้นคือ False
จะลิงก์ไลบรารี/ออบเจ็กต์แบบคงที่ในบล็อก --whole_archive หรือไม่
string; ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีแบบไดนามิกในไดเรกทอรี Solib สตริงว่างเพื่อใช้ค่าเริ่มต้น
ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีอินเทอร์เฟซในไดเรกทอรี 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, 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 หรือ depset โดยค่าเริ่มต้นคือ None
Depset of Directory ที่ Linker จะค้นหาไลบรารี ณ เวลาของลิงก์
None หรือ depset โดยค่าเริ่มต้นคือ None
Depset of Directory ที่ตัวโหลดจะค้นหาไลบรารีระหว่างรันไทม์
None หรือลำดับ ค่าเริ่มต้นคือ None
รายการแฟล็กลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้นคือ None
เส้นทางของไฟล์เอาต์พุตที่ไม่บังคับ
default คือ None
เส้นทางไฟล์พารามิเตอร์ที่ไม่บังคับ
ค่าเริ่มต้นคือ True
จริงเมื่อใช้ Linker และเป็นเท็จเมื่อเก็บ ผู้โทรมีหน้าที่ทำให้ตัวเลือกนี้ซิงค์กับชื่อการดำเนินการที่ใช้ (is_using_linker = จริงสำหรับการลิงก์ไลบรารีปฏิบัติการหรือไลบรารีแบบไดนามิก, is_using_linker = False สำหรับการเก็บถาวรไลบรารีแบบคงที่)
ค่าเริ่มต้นคือ False
เป็นจริงเมื่อสร้างไลบรารีแบบไดนามิก และเป็น "เท็จ" เมื่อไลบรารีปฏิบัติการหรือไลบรารีแบบคงที่ ผู้โทรมีหน้าที่รับผิดชอบในการซิงค์ชื่อการดำเนินการที่ใช้ ระบบจะนำช่องนี้ออกเมื่อแก้ไข b/65151735 แล้ว
ค่าเริ่มต้นคือ True
หากตั้งค่าเป็น "เท็จ" Bazel จะแสดงตัวแปร "strip_debug_symbols" ซึ่งโดยปกติจะใช้เพื่อใช้ Linker เพื่อตัดสัญลักษณ์การแก้ไขข้อบกพร่องจากไฟล์เอาต์พุต
ค่าเริ่มต้นคือ False
เมื่อตั้งค่าเป็น "จริง" ระบบจะตั้งค่าตัวแปร "is_cc_test"
ค่าเริ่มต้นคือ True
ไม่ได้ใช้งาน

create_linker_input

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

สร้าง LinkerInput

พารามิเตอร์

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

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 หรือ depset ค่าเริ่มต้นคือ None
Depset เป็น LinkerInput
None หรือลำดับ ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าใช้คำนี้ ถูกปิดใช้ด้วย --+incompatible_require_linker_input_cc_api ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนำโค้ดออกที่จะเกิดขึ้นเร็วๆ นี้
รายการ LibraryToLink
None หรือลำดับ ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าใช้คำนี้ ถูกปิดใช้ด้วย --+incompatible_require_linker_input_cc_api ใช้แฟล็กนี้เพื่อยืนยันว่าโค้ดเข้ากันได้กับการนำโค้ดออกที่จะเกิดขึ้นเร็วๆ นี้
รายการแฟล็กลิงก์ผู้ใช้ที่ส่งเป็นสตริง
additional_inputs None หรือลำดับ ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าใช้คำนี้ ถูกปิดใช้ด้วย --+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)

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

พารามิเตอร์

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

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:คอมไพเลอร์'}

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=[], additional_outputs=unbound)

ควรใช้สําหรับการลิงก์แบบสับเปลี่ยน C++

พารามิเตอร์

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

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 ค่าเริ่มต้นคือ []