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

ยูทิลิตีสำหรับการคอมไพล์ การลิงก์ และการสร้างบรรทัดคำสั่ง 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 ค่าเริ่มต้นคือ []
ชุดกำหนดที่จำเป็นต่อการคอมไพล์เป้าหมายนี้ แต่ละนิยามคือสตริง ไม่กระจายไปยังการอ้างอิงแบบสลาย
include_prefix ค่าเริ่มต้นคือ ''
คำนำหน้าที่จะเพิ่มไปยังเส้นทางของส่วนหัวของกฎนี้ เมื่อตั้งค่าแล้ว ส่วนหัวในแอตทริบิวต์ hdrs ของกฎนี้จะเข้าถึงได้ที่ คือค่าของแอตทริบิวต์นี้ที่เพิ่มไว้ข้างหน้าเส้นทางที่สัมพันธ์กับที่เก็บ ระบบจะนำคำนำหน้าในแอตทริบิวต์ Strip_include_prefix ออกก่อนที่จะเพิ่มคำนำหน้านี้
strip_include_prefix ค่าเริ่มต้นคือ ''
คำนำหน้าที่จะตัดออกจากเส้นทางของส่วนหัวของกฎนี้ เมื่อตั้งค่าแล้ว ส่วนหัวในแอตทริบิวต์ hdr ของกฎนี้จะสามารถเข้าถึงได้ที่เส้นทางโดยตัดคำนำหน้านี้ หากเป็นเส้นทางสัมพัทธ์ ระบบจะใช้ส่วนหัวที่สัมพันธ์กับแพ็กเกจ หากเป็นเส้นทางสัมบูรณ์ ระบบเข้าใจว่าเป็นเส้นทางที่สัมพันธ์กับที่เก็บ ระบบจะเพิ่มคำนำหน้าในแอตทริบิวต์ include_prefix ไว้หลังจากที่นำคำนำหน้านี้ออก
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 ต้องมีส่วนย่อยการกำหนดค่า CPA

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
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, cc_target_os=None)

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

พารามิเตอร์

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

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

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

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

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

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

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

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

toolchain_identifier ต้องระบุ

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

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

host_system_name string หรือ None ค่าเริ่มต้นคือ None
ละเว้น
target_system_name ต้องระบุ
ชื่อระบบ GNU
target_cpu ต้องระบุ
สตริงสถาปัตยกรรมเป้าหมาย
target_libc ต้องระบุ
สตริงเวอร์ชัน libc (เช่น "glibc-2.2.2")
compiler ต้องระบุ
สตริงเวอร์ชันคอมไพเลอร์ (เช่น "gcc-4.1.1")
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
cc_target_os string หรือ None ค่าเริ่มต้นคือ 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 ค่าเริ่มต้นคือ 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 จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
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 ค่าเริ่มต้นคือ False
เมื่อเป็นจริง การคอมไพล์จะสร้างโค้ดที่ไม่ขึ้นกับตำแหน่ง
add_legacy_cxx_options ค่าเริ่มต้นคือ Unused 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, 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 หรือ depset ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีที่ Linker จะค้นหาไลบรารี ณ เวลาของลิงก์
None หรือ depset ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีที่ตัวโหลดจะค้นหาไลบรารีขณะรันไทม์
None หรือลำดับ ค่าเริ่มต้นคือ None
รายการ Flag ลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้นคือ None
เส้นทางไฟล์เอาต์พุตที่ไม่บังคับ
ค่าเริ่มต้นคือ None
เส้นทางไฟล์พารามิเตอร์ที่ไม่บังคับ
ค่าเริ่มต้นคือ None
เส้นทางไฟล์ .def ที่ไม่บังคับ
ค่าเริ่มต้นคือ True
เป็นจริงเมื่อใช้ Linker, เท็จเมื่อเก็บถาวร ผู้โทรมีหน้าที่ซิงค์ข้อมูลนี้ให้ตรงกับชื่อการดำเนินการที่ใช้ (is_using_linker = True สำหรับการลิงก์ไลบรารีที่ดำเนินการได้หรือไลบรารีแบบไดนามิก, is_using_linker = False สำหรับเก็บถาวรไลบรารีแบบคงที่)
ค่าเริ่มต้นคือ False
เป็นจริงเมื่อสร้างไลบรารีแบบไดนามิก, เท็จเมื่อไลบรารีที่ดำเนินการได้หรือไลบรารีแบบคงที่ ผู้โทรมีหน้าที่ซิงค์ข้อมูลนี้กับชื่อการทำงานที่ใช้ ระบบจะนำช่องนี้ออกเมื่อแก้ไข b/65151735 แล้ว
ค่าเริ่มต้นคือ True
เมื่อตั้งค่าเป็น "เท็จ" bazel จะแสดงตัวแปร "strip_debug_symbols" ซึ่งปกติจะใช้ในการใช้ Linker เพื่อตัดสัญลักษณ์การแก้ไขข้อบกพร่องออกจากไฟล์เอาต์พุต
ค่าเริ่มต้นคือ False
เมื่อตั้งค่าเป็น "จริง" ระบบจะตั้งค่าตัวแปร "is_cc_test"
ค่าเริ่มต้นคือ Unused 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 ไว้ใน 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{'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 จำเป็น
การกำหนดค่าฟีเจอร์ที่จะค้นหา
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
เอาต์พุตการคอมไพล์ที่มีไฟล์ออบเจ็กต์ที่จะลิงก์
ค่าเริ่มต้นคือ []
รายการตัวเลือกตัวลิงก์เพิ่มเติม
linking_contexts ค่าเริ่มต้นคือ []
การลิงก์บริบทจากทรัพยากร Dependency จะลิงก์กับบริบทการลิงก์ที่สร้างโดยกฎนี้
name ต้องระบุ
ใช้เพื่อตั้งชื่ออาร์ติแฟกต์เอาต์พุตของการดำเนินการที่สร้างโดยเมธอดนี้
language ค่าเริ่มต้นคือ 'c++'
ขณะนี้รองรับเฉพาะ C++ เท่านั้น อย่าใช้พารามิเตอร์นี้
output_type ค่าเริ่มต้นคือ 'executable'
อาจเป็น "executable" หรือ "dynamic_library" ก็ได้
ค่าเริ่มต้นคือ True
True จะลิงก์ทรัพยากร Dependency แบบคงที่, "เท็จ" แบบไดนามิก
stamp ค่าเริ่มต้นคือ 0
ระบุว่าจะรวมข้อมูลบิลด์ในไฟล์ปฏิบัติการที่ลิงก์หรือไม่ หากเอาต์พุต_type เป็น "ปฏิบัติการ" หากเป็น 1 ระบบจะรวมข้อมูลบิลด์เสมอ หาก 0 (ระบบจะยกเว้นข้อมูลบิลด์เริ่มต้นเสมอ หาก -1 จะใช้ลักษณะการทำงานเริ่มต้น ซึ่งอาจถูกลบล้างโดยแฟล็ก --[no]stamp ซึ่งควรไม่ได้ตั้งค่า (หรือตั้งค่าเป็น 0) เมื่อสร้างเอาต์พุตที่เรียกใช้ได้สำหรับกฎการทดสอบ
additional_inputs sequence หรือ 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 ค่าเริ่มต้นคือ []