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

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

สมาชิก

action_is_enabled

bool cc_common.action_is_enabled(feature_configuration, action_name)

แสดงค่า True หากเปิดใช้ 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++ ส่งคืน Tuple ของ (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> โดยอาจเป็นเส้นทางที่สัมพันธ์กับรูทการดำเนินการหรือเส้นทางแบบสัมบูรณ์ โดยปกติจะส่งผ่านด้วย -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 ค่าเริ่มต้นคือ []
ส่วนหัวจากทรัพยากร Dependency ที่ใช้ในการคอมไพล์
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 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 ได้โดยการเพิ่มส่วน "ฟีเจอร์" ลงใน Toolchain และเพิ่มสตริงที่เกี่ยวข้องเป็นฟีเจอร์ในไฟล์ BUILD

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

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

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

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

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

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

ระบบจะเปิดใช้ฟีเจอร์ไม่ได้ในกรณีต่อไปนี้
- 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++ เส้นทางเหล่านี้ควรเป็นเส้นทางที่คอมไพเลอร์ใช้และโดยทั่วไปจะสัมพันธ์กับรูทของ Exec

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

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

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

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

toolchain_identifier ต้องระบุ

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

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

host_system_name string หรือ None; ค่าเริ่มต้นคือ None
ไม่สนใจ
target_system_name ต้องระบุ
ชื่อระบบ GNU
target_cpu required
สตริงสถาปัตยกรรมเป้าหมาย
target_libc required
สตริงเวอร์ชัน libc (เช่น "glibc-2.2.2")
compiler ต้องระบุ
สตริงเวอร์ชันคอมไพเลอร์ (เช่น "gcc-4.1.1")
abi_version string หรือ None; ค่าเริ่มต้นคือ None
ABI ที่ใช้งานอยู่ ซึ่งเป็นเวอร์ชัน gcc เช่น "gcc-3.4"
abi_libc_version string หรือ 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 สตริง หรือ 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" โดยอาจเป็นแบบสัมพัทธ์กับรูทของ 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
รายการไฟล์ออบเจ็กต์ pic

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_inefficient_command_line เนื่องจากจะช่วยให้ผู้เขียนเครื่องมือสามารถระบุและวางตำแหน่งแฟล็กคอมไพเลอร์ได้อย่างเหมาะสม
output_file ค่าเริ่มต้นคือ None
ไฟล์เอาต์พุตของการคอมไพล์ (ไม่บังคับ) โปรดส่ง output_file ที่นี่แทนการต่อท้ายไว้ที่ท้ายบรรทัดคำสั่งที่สร้างจาก cc_common.get_memory_inefficient_command_line เนื่องจากจะช่วยให้ผู้เขียนเครื่องมือสามารถระบุและวางตำแหน่งแฟล็กคอมไพเลอร์ได้อย่างเหมาะสม
user_compile_flags ลำดับของสตริง หรือ None ค่าเริ่มต้นคือ None
รายการแฟล็กการคอมไพล์เพิ่มเติม (copts)
include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีรวม
quote_include_directories depset หรือ None ค่าเริ่มต้นคือ None
Depset ของโควต้ารวมถึงไดเรกทอรี
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
ไฟล์ Bitcode ที่ป้อนไปยังแบ็กเอนด์ LTO
thinlto_output_object_file string หรือ 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 ลำดับของไฟล์ ค่าเริ่มต้นคือ 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)

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
required
cc_toolchain ที่เรากำลังสร้างตัวแปรบิลด์
ต้องระบุ
การกำหนดค่าฟีเจอร์ที่จะค้นหา
None หรือ depset ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีที่ Linker จะค้นหาไลบรารีในเวลาลิงก์
None หรือ depset ค่าเริ่มต้นคือ None
Depset ของไดเรกทอรีที่โปรแกรมโหลดจะค้นหาไลบรารีในรันไทม์
None หรือ sequence ค่าเริ่มต้นคือ None
รายการแฟล็กลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้นคือ None
เส้นทางไฟล์เอาต์พุตที่ไม่บังคับ
ค่าเริ่มต้นคือ None
เส้นทางไฟล์พารามิเตอร์ที่ไม่บังคับ
ค่าเริ่มต้นคือ None
เส้นทางไฟล์ .def ที่ไม่บังคับ
ค่าเริ่มต้นคือ True
จริงเมื่อใช้ Linker เท็จเมื่อใช้ Archiver ผู้เรียกมีหน้าที่รับผิดชอบในการซิงค์ค่านี้กับชื่อการดำเนินการที่ใช้ (is_using_linker = True สำหรับการลิงก์ไลบรารีที่เรียกใช้งานได้หรือไลบรารีแบบไดนามิก, is_using_linker = False สำหรับการเก็บถาวรไลบรารีแบบคงที่)
ค่าเริ่มต้นคือ False
เป็นจริงเมื่อสร้างไลบรารีแบบไดนามิก เป็นเท็จเมื่อสร้างไลบรารีแบบเรียกใช้งานได้หรือแบบคงที่ ผู้เรียกใช้มีหน้าที่รับผิดชอบในการซิงค์ชื่อนี้กับชื่อการกระทำที่ใช้ ระบบจะนำช่องนี้ออกเมื่อแก้ไข b/65151735 แล้ว
ค่าเริ่มต้นคือ True
เมื่อตั้งค่าเป็น False, 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 required
ป้ายกำกับของเป้าหมายที่สร้างไฟล์ทั้งหมดที่ใช้ในอินพุตนี้
libraries None หรือ depset ค่าเริ่มต้นคือ None
รายการของ LibraryToLink
None หรือ depset ของ string หรือ sequence ของ string ค่าเริ่มต้นคือ None
แฟ็กลิงก์ผู้ใช้ที่ส่งเป็นสตริง ยอมรับ [String], [[String]] หรือ depset(String) เราไม่แนะนำให้ใช้แบบหลังเนื่องจากจะเก็บไว้เพื่อวัตถุประสงค์ด้านความเข้ากันได้เท่านั้น และจะทำให้ depset แบน หากต้องการเผยแพร่ user_link_flags ผ่าน depsets() ที่ไม่ได้ Flatten ให้ห่อด้วย LinkerInput เพื่อไม่ให้ Flatten จนกว่าจะสิ้นสุด
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 จะปิดใช้ ใช้ฟีเจอร์นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนำออกที่กำลังจะเกิดขึ้น
รายการ LibraryToLink
None หรือ sequence ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าใช้ฟีเจอร์นี้ --+incompatible_require_linker_input_cc_api จะปิดใช้ ใช้ฟีเจอร์นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนำออกที่กำลังจะเกิดขึ้น
รายการแฟล็กลิงก์ผู้ใช้ที่ส่งเป็นสตริง
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)

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

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
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
True เพื่อลิงก์การอ้างอิงแบบคงที่, False เพื่อลิงก์แบบไดนามิก
stamp ค่าเริ่มต้นคือ 0
เลือกว่าจะรวมข้อมูลการสร้างไว้ในไฟล์ที่เรียกใช้งานได้ที่ลิงก์หรือไม่ หาก output_type คือ "executable" หากเป็น 1 ระบบจะรวมข้อมูลบิลด์เสมอ หากเป็น 0 (ระบบจะยกเว้นข้อมูลบิลด์เริ่มต้นเสมอ หากเป็น -1 ระบบจะใช้ลักษณะการทำงานเริ่มต้น ซึ่งอาจถูกลบล้างโดยแฟล็ก --[no]stamp ควรยกเลิกการตั้งค่านี้ (หรือตั้งค่าเป็น 0) เมื่อสร้างเอาต์พุตที่เรียกใช้งานได้สำหรับกฎการทดสอบ
additional_inputs sequence หรือ depset ค่าเริ่มต้นคือ []
สำหรับอินพุตเพิ่มเติมในการดำเนินการลิงก์ เช่น สคริปต์การลิงก์
additional_outputs sequence ค่าเริ่มต้นคือ 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 ค่าเริ่มต้นคือ []