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

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

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

สำหรับสมาชิก

action_is_enabled

bool cc_common.action_is_enabled(feature_configuration, action_name)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name string; required
ชื่อของ 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=[], module_interfaces=unbound)

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

พารามิเตอร์

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

configure_features

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
ctx ctx หรือ None ค่าเริ่มต้นคือ None
บริบทของกฎ
cc_toolchain ข้อมูล ต้องระบุ
cc_toolchain ที่เรากำหนดค่าฟีเจอร์
language string หรือ None ค่าเริ่มต้นคือ None
ภาษาที่จะกำหนดค่าสำหรับ: c++ หรือ objc (ค่าเริ่มต้น c++)
requested_features sequence ค่าเริ่มต้นคือ []
รายการฟีเจอร์ที่จะเปิดใช้
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=None, target_cpu=None, target_libc=None, compiler, abi_version=None, abi_libc_version=None, tool_paths=[], make_variables=[], builtin_sysroot=None)

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

พารามิเตอร์

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

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

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

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

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

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

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

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

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

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

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

action_name: ชื่อของการดำเนินการของ Bazel ที่ใช้การกำหนดค่านี้ เช่น "c-compile" หรือ "c-module-compile"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

toolchain_identifier string; ต้องระบุ

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

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

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

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

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

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

make_variables sequence; ค่าเริ่มต้นคือ []
ตัวแปร "ทำให้" ที่กฎเข้าถึงได้
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
ชุดกำหนดที่จำเป็นต่อการคอมไพล์เป้าหมายนี้ แต่ละนิยามคือสตริง ไม่เผยแพร่แบบสปอตไปยังผู้ที่พึ่งพาอาศัย

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 FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
source_file ค่าเริ่มต้นคือ None
ไฟล์ต้นฉบับที่ไม่บังคับสำหรับการคอมไพล์ โปรดส่ง source_file ที่นี่ แล้วนำไปต่อท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficiency_command_line เพราะจะทำให้ผู้เขียน Toolchain ระบุและจัดตำแหน่งแฟล็กคอมไพเลอร์ได้อย่างเหมาะสม
output_file ค่าเริ่มต้นคือ None
ไฟล์เอาต์พุตที่ไม่บังคับของการคอมไพล์ โปรดส่ง exit_file ที่นี่ แล้วต่อท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficiency_command_line เพราะจะทำให้ผู้เขียน Toolchain ระบุและจัดตำแหน่งแฟล็กคอมไพเลอร์ได้อย่างเหมาะสม
user_compile_flags ลำดับของสตริง หรือ None ค่าเริ่มต้นคือ None
รายการ Flag การคอมไพล์เพิ่มเติม (copt)
include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีรวม
quote_include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset of เครื่องหมายคำพูดรวมไดเรกทอรี
system_include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset ของระบบรวมถึงไดเรกทอรี
framework_include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset ของเฟรมเวิร์กรวมไดเรกทอรี
preprocessor_defines depset หรือ None ค่าเริ่มต้นคือ None
Depset ของค่ากำหนดล่วงหน้า
thinlto_index string หรือ None ค่าเริ่มต้นคือ None
เส้นทางไฟล์ดัชนี LTO
thinlto_input_bitcode_file string หรือ None ค่าเริ่มต้นคือ None
ไฟล์บิตโค้ดที่เป็นอินพุตไปยังแบ็กเอนด์ LTO
thinlto_output_object_file string หรือ None ค่าเริ่มต้นคือ None
ไฟล์ออบเจ็กต์ที่เอาต์พุตโดยแบ็กเอนด์ LTO
use_pic bool; ค่าเริ่มต้นคือ False
เมื่อเป็นจริง การคอมไพล์จะสร้างรหัสที่ไม่ขึ้นกับตำแหน่ง
add_legacy_cxx_options bool; ค่าเริ่มต้นคือ False
Unused
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
ทดลอง, อย่าใช้
bool; ค่าเริ่มต้นคือ False
ระบุว่าจะลิงก์ไลบรารี/ออบเจ็กต์แบบคงที่ในบล็อก --whole_archive หรือไม่
string; ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีแบบไดนามิกในไดเรกทอรี Solib สตริงว่างเพื่อใช้ค่าเริ่มต้น
string; ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีอินเทอร์เฟซในไดเรกทอรี Solib สตริงว่างเพื่อใช้ค่าเริ่มต้น

Variables cc_common.create_link_variables(cc_toolchain, feature_configuration, library_search_directories=[], runtime_library_search_directories=[], user_link_flags=[], 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 ซึ่งเราจะสร้างตัวแปรบิลด์
FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
depset; ค่าเริ่มต้นคือ []
Depset ของไดเรกทอรีที่ Linker จะค้นหาไลบรารี ณ เวลาของลิงก์
depset; ค่าเริ่มต้นคือ []
Depset ของไดเรกทอรีที่ตัวโหลดจะค้นหาไลบรารีขณะรันไทม์
sequence; ค่าเริ่มต้นคือ []
รายการ Flag ลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้นคือ None
เส้นทางไฟล์เอาต์พุตที่ไม่บังคับ
ค่าเริ่มต้นคือ None
เส้นทางไฟล์พารามิเตอร์ที่ไม่บังคับ
bool; ค่าเริ่มต้นคือ True
จริงเมื่อใช้ Linker และ "เท็จ" เมื่อเก็บถาวร ผู้โทรมีหน้าที่ซิงค์ข้อมูลนี้ให้ตรงกับชื่อการดำเนินการที่ใช้ (is_using_linker = True สำหรับการลิงก์ไลบรารีที่ดำเนินการได้หรือไลบรารีแบบไดนามิก, is_using_linker = False สำหรับเก็บถาวรไลบรารีแบบคงที่)
bool; ค่าเริ่มต้นคือ False
True เมื่อสร้างไลบรารีแบบไดนามิก, False เมื่อไลบรารีที่ดำเนินการได้หรือไลบรารีแบบคงที่ ผู้โทรมีหน้าที่ซิงค์ข้อมูลนี้กับชื่อการทำงานที่ใช้ ระบบจะนำช่องนี้ออกเมื่อแก้ไข b/65151735 แล้ว
bool; ค่าเริ่มต้นคือ True
เมื่อตั้งค่าเป็น "เท็จ" bazel จะแสดงตัวแปร "strip_debug_symbols" ซึ่งปกติแล้วจะใช้ในการใช้ Linker เพื่อตัดสัญลักษณ์การแก้ไขข้อบกพร่องออกจากไฟล์เอาต์พุต
bool; ค่าเริ่มต้นคือ False
เมื่อตั้งค่าเป็น "จริง" ระบบจะตั้งค่าตัวแปร "is_cc_test"
bool; ค่าเริ่มต้นคือ True
Unused

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 ไว้ใน 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, name, feature_configuration, cc_toolchain, language='c++', disallow_static_libraries=False, disallow_dynamic_library=False, compilation_outputs, linking_contexts=[], user_link_flags=[], alwayslink=False, additional_inputs=[], variables_extension=unbound)

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

พารามิเตอร์

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

create_lto_compilation_context

LtoCompilationContext cc_common.create_lto_compilation_context(objects={})

สร้างบริบทการคอมไพล์ LTO

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
objects dict; ค่าเริ่มต้นคือ {}
แมปของออบเจ็กต์แบบเต็มกับออบเจ็กต์ดัชนี

do_not_use_tools_cpp_compiler_present

None cc_common.do_not_use_tools_cpp_compiler_present

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

get_environment_variables

dict cc_common.get_environment_variables(feature_configuration, action_name, variables)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
feature_configuration FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name string; ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นหนึ่งในชื่อใน @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 FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name string; ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นหนึ่งในชื่อใน @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 FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name string; ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นหนึ่งในชื่อใน @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 FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
action_name string; ต้องระบุ
ชื่อของการดำเนินการ ต้องเป็นหนึ่งในชื่อใน @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 FeatureConfiguration; จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
feature_name string; required
ชื่อฟีเจอร์

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

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

พารามิเตอร์

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

merge_compilation_contexts

CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])

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

พารามิเตอร์

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

merge_compilation_outputs

CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])

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

พารามิเตอร์

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