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

รายงานปัญหา ดูซอร์สโค้ด รุ่น Nightly · 8.0 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 FeatureConfiguration; ต้องระบุ
การค้นหาการกําหนดค่าฟีเจอร์
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=[], conly_flags=[], cxx_flags=[], compilation_contexts=[], name, disallow_pic_outputs=False, disallow_nopic_outputs=False, additional_inputs=[], module_interfaces=unbound)

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

พารามิเตอร์

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

พารามิเตอร์

พารามิเตอร์ คำอธิบาย
ctx ctx หรือ None ค่าเริ่มต้นคือ None
บริบทของกฎ
cc_toolchain ข้อมูล; ต้องระบุ
cc_toolchain ที่เรากำหนดค่าฟีเจอร์
language สตริง หรือ None ค่าเริ่มต้นคือ None
ภาษาที่จะกําหนดค่าสำหรับ C++ หรือ OBJC (ค่าเริ่มต้นคือ C++)
requested_features sequence; ค่าเริ่มต้นคือ []
รายการฟีเจอร์ที่จะเปิดใช้
unsupported_features sequence; ค่าเริ่มต้นคือ []
รายการฟีเจอร์ที่กฎปัจจุบันไม่รองรับ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

toolchain_identifier string; required

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

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

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

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

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

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

make_variables sequence; ค่าเริ่มต้นคือ []
ตัวแปร make ที่ทําให้กฎเข้าถึงได้
builtin_sysroot สตริง หรือ 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> โดยเส้นทางเหล่านี้อาจเป็นแบบสัมพัทธ์กับรูท 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 ข้อมูล; ต้องระบุ
cc_toolchain ที่เรากําลังสร้างตัวแปรการสร้าง
feature_configuration FeatureConfiguration; ต้องระบุ
การค้นหาการกําหนดค่าฟีเจอร์
source_file ค่าเริ่มต้นคือ None
ไม่บังคับ ไฟล์ต้นฉบับสำหรับการคอมไพล์ โปรดส่ง source_file ที่นี่แทนการต่อท้ายที่ส่วนท้ายของบรรทัดคำสั่งที่สร้างขึ้นจาก cc_common.get_memory_inefficient_command_line เนื่องจากผู้เขียนเครื่องมือทางเทคนิคจะระบุและวางตำแหน่ง Flag คอมไพเลอร์ได้อย่างเหมาะสม
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 ของไดเรกทอรีรวมคำพูด
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 สตริง หรือ None ค่าเริ่มต้นคือ None
ไฟล์บิตโค้ดที่ส่งไปยังแบ็กเอนด์ LTO
thinlto_output_object_file สตริง หรือ None ค่าเริ่มต้นคือ None
ออบเจ็กต์ไฟล์ที่แสดงผลโดยแบ็กเอนด์ LTO
use_pic bool; ค่าเริ่มต้นคือ False
เมื่อเป็น "จริง" การคอมไพล์จะสร้างโค้ดที่ไม่ขึ้นกับตำแหน่ง
add_legacy_cxx_options bool; default is 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 ลําดับของ Files; ค่าเริ่มต้นคือ unbound
เป็นเวอร์ชันทดลอง อย่าใช้
objects ลําดับของ Files; ค่าเริ่มต้นคือ unbound
เป็นเวอร์ชันทดลอง อย่าใช้
bool; ค่าเริ่มต้นคือ False
หากต้องการลิงก์ไลบรารี/ออบเจ็กต์แบบคงที่ในบล็อก --whole_archive
สตริง; ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีแบบไดนามิกในไดเรกทอรี solib สตริงว่างเพื่อใช้ค่าเริ่มต้น
สตริง; ค่าเริ่มต้นคือ ''
ลบล้างเส้นทางเริ่มต้นของลิงก์ไลบรารีอินเทอร์เฟซในไดเรกทอรี 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 ของไดเรกทอรีที่ตัวลิงก์จะค้นหาไลบรารีในเวลาลิงก์
depset; ค่าเริ่มต้นคือ []
Depset ของไดเรกทอรีที่โปรแกรมโหลดจะค้นหาไลบรารีขณะรันไทม์
sequence; ค่าเริ่มต้นคือ []
ลิสต์ Flag ลิงก์เพิ่มเติม (linkopts)
ค่าเริ่มต้นคือ None
เส้นทางไฟล์เอาต์พุต (ไม่บังคับ)
ค่าเริ่มต้นคือ None
โดยพาธไฟล์พารามิเตอร์เป็นตัวเลือก
bool; ค่าเริ่มต้นคือ True
True เมื่อใช้ linker, False เมื่อใช้ archiver ผู้เรียกใช้มีหน้าที่รับผิดชอบในการรักษาค่านี้ให้สอดคล้องกับชื่อการดำเนินการที่ใช้ (is_using_linker = True สําหรับการลิงก์ไลบรารีแบบเรียกใช้งานได้หรือแบบไดนามิก is_using_linker = False สําหรับการเก็บถาวรของไลบรารีแบบคงที่)
bool; ค่าเริ่มต้นคือ False
True เมื่อสร้างไลบรารีแบบไดนามิก, False เมื่อสร้างไลบรารีแบบปฏิบัติการหรือแบบคงที่ ผู้เรียกมีหน้าที่รับผิดชอบในการรักษาข้อมูลนี้ให้สอดคล้องกับชื่อการดําเนินการที่ใช้งาน ระบบจะนำช่องนี้ออกเมื่อ b/65151735 ได้รับการแก้ไขแล้ว
bool; ค่าเริ่มต้นคือ True
เมื่อตั้งค่าเป็น False นั้น bazel จะแสดงตัวแปร "strip_debug_symbols" ซึ่งปกติจะใช้เพื่อใช้ตัวลิงก์เพื่อลบสัญลักษณ์การแก้ไขข้อบกพร่องออกจากไฟล์เอาต์พุต
bool; ค่าเริ่มต้นคือ False
เมื่อตั้งค่าเป็น "จริง" ระบบจะตั้งค่าตัวแปร "is_cc_test"
bool; default is 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 หรือ depset ของ สตริง หรือ ลําดับของ สตริง ค่าเริ่มต้นคือ None
Flag ลิงก์ผู้ใช้ที่ส่งเป็นสตริง ยอมรับ [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 นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนําออกที่กําลังจะเกิดขึ้น
รายการ Flag ของลิงก์ผู้ใช้ที่ส่งเป็นสตริง
additional_inputs None หรือ sequence ค่าเริ่มต้นคือ None
เลิกใช้งานแล้ว พารามิเตอร์นี้เลิกใช้งานแล้วและจะถูกนำออกเร็วๆ นี้ โปรดอย่าใช้ข้อมูลนี้ ปิดใช้กับ --incompatible_require_linker_input_cc_api ใช้ Flag นี้เพื่อยืนยันว่าโค้ดของคุณเข้ากันได้กับการนําออกที่กําลังจะเกิดขึ้น
สำหรับอินพุตเพิ่มเติมในการดำเนินการลิงก์ เช่น การลิงก์สคริปต์

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)

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

พารามิเตอร์

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

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 สตริง; ต้องระบุ
ชื่อการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @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 สตริง; ต้องระบุ
ชื่อการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @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 สตริง; ต้องระบุ
ชื่อการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @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 สตริง; ต้องระบุ
ชื่อการดำเนินการ ต้องเป็นชื่อใดชื่อหนึ่งใน @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; ต้องระบุ
ชื่อของฟีเจอร์

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

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