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

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ยูทิลิตีสำหรับการคอมไพล์ การลิงก์ และการสร้างบรรทัดคำสั่ง 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++ ที่ใช้อยู่

คอมไพล์

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++ แสดงผลทูเปิลของ (CompilationContext, CcCompilationOutputs)

พารามิเตอร์

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

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 required
cc_toolchain สำหรับกำหนดค่าฟีเจอร์
language สตริง หรือ 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" ลงในชุดเครื่องมือและเพิ่มสตริงที่เกี่ยวข้องเป็นฟีเจอร์ในไฟล์ BUILD

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

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

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

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

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

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

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

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

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

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

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

flag_sets: หากเปิดใช้การกําหนดค่าการดําเนินการหนึ่งๆ ระบบจะใช้ชุด Flag กับการดำเนินการที่เกี่ยวข้อง

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

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

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

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

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

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

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

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

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

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

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

toolchain_identifier ต้องระบุ

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

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

host_system_name สตริง หรือ 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 เช่น "gcc-3.4"
abi_libc_version สตริง หรือ None ค่าเริ่มต้นคือ None
ซึ่งเป็นเวอร์ชัน glibc ที่ abi ที่เราใช้อยู่ใช้
tool_paths ค่าเริ่มต้นคือ []
ตำแหน่งเครื่องมือ

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

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

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

make_variables ค่าเริ่มต้นคือ []
ตัวแปร make ที่อนุญาตให้กฎเข้าถึงได้
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> โดยเส้นทางเหล่านี้อาจเป็นแบบสัมพัทธ์กับรูท exec หรือแบบสัมบูรณ์ก็ได้ โดยปกติจะส่งผ่านกับ -isystem
includes ค่าเริ่มต้นคือ unbound
ชุดเส้นทางการค้นหาสำหรับไฟล์ส่วนหัวที่อ้างอิงทั้งโดยเครื่องหมายวงเล็บปีกกาและเครื่องหมายคำพูด โดยปกติจะส่งผ่านด้วย -I
quote_includes ค่าเริ่มต้นคือ unbound
ชุดเส้นทางการค้นหาสำหรับไฟล์ส่วนหัวที่อ้างอิงด้วยเครื่องหมายคำพูด เช่น #include "foo/bar/header.h" โดยอาจเป็นค่าสัมพัทธ์กับรูท exec หรือค่าสัมบูรณ์ก็ได้ โดยปกติจะส่งผ่านด้วย -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 required
cc_toolchain ที่เรากําลังสร้างตัวแปรการสร้าง
feature_configuration ต้องระบุ
การค้นหาการกําหนดค่าฟีเจอร์
source_file ค่าเริ่มต้นคือ None
ไม่บังคับ ไฟล์ต้นฉบับสำหรับการคอมไพล์ โปรดส่ง source_file ที่นี่ แล้วนำไปต่อท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficiency_command_line เพราะ ผู้เขียน Toolchain จะต้องระบุและจัดตำแหน่งแฟล็กคอมไพเลอร์อย่างถูกต้อง
output_file ค่าเริ่มต้นคือ None
ไม่บังคับ ไฟล์เอาต์พุตของการคอมไพล์ โปรดส่ง output_file ที่นี่แทนการต่อท้ายที่ส่วนท้ายของบรรทัดคำสั่งที่สร้างขึ้นจาก cc_common.get_memory_inefficient_command_line เนื่องจากผู้เขียนเครื่องมือทางเทคนิคจะระบุและวางตำแหน่ง Flag คอมไพเลอร์ได้อย่างเหมาะสม
user_compile_flags ลําดับสตริง หรือ None ค่าเริ่มต้นคือ None
ลิสต์ของ Flag การคอมไพล์เพิ่มเติม (copts)
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 สตริง หรือ None ค่าเริ่มต้นคือ None
เส้นทางไฟล์ดัชนี LTO
thinlto_input_bitcode_file string หรือ None ค่าเริ่มต้นคือ None
ไฟล์บิตโค้ดที่เป็นอินพุตไปยังแบ็กเอนด์ LTO
thinlto_output_object_file สตริง หรือ None ค่าเริ่มต้นคือ None
ออบเจ็กต์ไฟล์ที่แสดงผลโดยแบ็กเอนด์ LTO
use_pic ค่าเริ่มต้นคือ False
เมื่อเป็น "จริง" การคอมไพล์จะสร้างโค้ดที่ไม่ขึ้นอยู่กับตำแหน่ง
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 ลําดับของ Files; ค่าเริ่มต้นคือ unbound
เป็นเวอร์ชันทดลอง อย่าใช้
ค่าเริ่มต้นคือ False
หากต้องการลิงก์ไลบรารี/ออบเจ็กต์แบบคงที่ในบล็อก --whole_archive
สตริง; ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีแบบไดนามิกในไดเรกทอรี 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)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
required
cc_toolchain ที่เรากําลังสร้างตัวแปรการสร้าง
ต้องระบุ
การค้นหาการกําหนดค่าฟีเจอร์
None หรือ depset ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีที่ตัวลิงก์จะค้นหาไลบรารีในเวลาลิงก์
None หรือ depset ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีที่โปรแกรมโหลดจะค้นหาไลบรารีขณะรันไทม์
None หรือ sequence ค่าเริ่มต้นคือ None
ลิสต์ Flag ลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้นคือ None
เส้นทางไฟล์เอาต์พุต (ไม่บังคับ)
ค่าเริ่มต้นคือ None
เส้นทางไฟล์พารามิเตอร์ที่ไม่บังคับ
ค่าเริ่มต้นคือ None
เส้นทางไฟล์ .def ที่ไม่บังคับ
ค่าเริ่มต้นคือ True
True เมื่อใช้ linker, False เมื่อใช้ archiver ผู้เรียกใช้มีหน้าที่รับผิดชอบในการรักษาค่านี้ให้สอดคล้องกับชื่อการดำเนินการที่ใช้ (is_using_linker = True สําหรับการลิงก์ไฟล์ปฏิบัติการหรือไลบรารีแบบไดนามิก, is_using_linker = False สําหรับการเก็บถาวรของไลบรารีแบบคงที่)
ค่าเริ่มต้นคือ False
True เมื่อสร้างไลบรารีแบบไดนามิก, False เมื่อสร้างไฟล์ปฏิบัติการหรือไลบรารีแบบคงที่ ผู้โทรมีหน้าที่ซิงค์ข้อมูลนี้กับชื่อการทำงานที่ใช้ ระบบจะนำช่องนี้ออกเมื่อ b/65151735 ได้รับการแก้ไขแล้ว
ค่าเริ่มต้นคือ True
เมื่อตั้งค่าเป็น False นั้น bazel จะแสดงตัวแปร "strip_debug_symbols" ซึ่งปกติจะใช้เพื่อใช้ตัวลิงก์เพื่อลบสัญลักษณ์การแก้ไขข้อบกพร่องออกจากไฟล์เอาต์พุต
ค่าเริ่มต้นคือ 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 ผ่าน depset() ที่ไม่ได้ผสาน ให้รวมไว้ใน 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 หรือ sequence ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าพึ่งพา ปิดใช้กับ --+incompatible_require_linker_input_cc_api ใช้ Flag นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนําออกที่กําลังจะเกิดขึ้น
รายการ LibraryToLink
None หรือ sequence ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าใช้ข้อมูลนี้ ปิดใช้กับ --+incompatible_require_linker_input_cc_api ใช้ Flag นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนําออกที่กําลังจะเกิดขึ้น
รายการการแจ้งลิงก์ของผู้ใช้ที่ส่งผ่านเป็นสตริง
additional_inputs None หรือ sequence ค่าเริ่มต้นคือ 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)

ควรใช้ในการสร้างกฎไลบรารีที่สามารถเผยแพร่ข้อมูลไปยังดาวน์สตรีมเพื่อให้กฎระดับบนสุดทำการลิงก์แบบทรานซิทีฟเพื่อสร้างไลบรารีแบบไดนามิกหรือแบบปฏิบัติการในภายหลัง แสดงผลทูเปิลของ (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 required
ชื่อของฟีเจอร์

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
True จะลิงก์ทรัพยากร Dependency แบบคงที่, "เท็จ" แบบไดนามิก
stamp ค่าเริ่มต้นคือ 0
ดูว่าจะรวมข้อมูลบิลด์ในไฟล์ปฏิบัติการที่ลิงก์หรือไม่ หากเอาต์พุต_type เป็น "ปฏิบัติการ" หากเป็น 1 ระบบจะรวมข้อมูลบิลด์ไว้เสมอ หาก 0 (ระบบจะยกเว้นข้อมูลบิลด์เริ่มต้นเสมอ หากเป็น -1 ระบบจะใช้ลักษณะการทำงานเริ่มต้น ซึ่งอาจลบล้างด้วย Flag --[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 ค่าเริ่มต้นคือ []