C / C++ 규칙

규칙

cc_binary

cc_binary(name, deps, srcs, data, additional_linker_inputs, args, compatible_with, copts, defines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, includes, licenses, linkopts, linkshared, linkstatic, local_defines, malloc, nocopts, output_licenses, restricted_to, stamp, tags, target_compatible_with, testonly, toolchains, visibility, win_def_file)

암시적 출력 타겟

  • name.stripped (명시적으로 요청된 경우에만 빌드됨): A 제거됨 바이너리의 버전입니다 strip -g는 바이너리에서 실행되어 디버그를 삭제합니다. 기호로 구분되지 않습니다. 명령줄에서 --stripopt=-foo 이 출력은 명시적으로 요청된 경우에만 빌드됩니다.
  • name.dwp (명시적으로 요청된 경우에만 빌드됨): 분열이 사용 설정됨: 디버그 원격으로 배포된 바이너리를 디버깅하는 데 적합한 정보 패키지 파일입니다. 그 외: 빈 파일입니다.

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

바이너리 타겟에 연결할 다른 라이브러리의 목록입니다.

cc_library 또는 objc_library일 수 있습니다. 있습니다

srcs

List of labels; optional

타겟을 생성하기 위해 처리되는 C 및 C++ 파일의 목록입니다. 이 파일은 C/C++ 소스 및 헤더 파일로, 생성되지 않은 (일반 소스) 생성됩니다.

모든 .cc, .c, .cpp 파일이 실행됩니다. 컴파일해야 합니다 다음과 같은 파일이 생성될 수 있습니다. 이름이 지정된 파일이 다른 규칙의 outs, 이 규칙 자동으로 다른 규칙에 종속됩니다.

.h 파일은 컴파일되지 않지만 다음에서 사용할 수 있습니다. 포함할 수 없습니다. .cc.h 파일은 srcs 또는 hdrs deps 인수입니다.

모든 #included 파일은 이 규칙의 srcs 속성 또는 참조된 cc_library()hdrs 속성입니다. 권장되는 스타일은 라이브러리와 연결된 헤더가 라이브러리의 hdrs 속성에 나열되고 이 규칙의 소스와 연결된 헤더 srcs '헤더 포함 확인'을 참고하세요. 를 참조하세요.

규칙의 이름이 srcs에 있는 경우 이 규칙은 자동으로 그것에 의존합니다. 이름이 지정된 규칙의 outs가 C 또는 C++인 경우 이 규칙으로 컴파일됩니다. 라이브러리 파일인 경우 연결됩니다.

허용되는 srcs 파일 형식은 다음과 같습니다.

  • C 및 C++ 소스 파일: .c, .cc, .cpp .cxx님, .c++님, .C
  • C 및 C++ 헤더 파일: .h, .hh, .hpp .hxx님, .inc님, .inl님, .H
  • C 전처리기가 있는 어셈블러: .S
  • 보관처리: .a, .pic.a
  • '항상 링크' 라이브러리: .lo, .pic.lo
  • 버전이 지정되거나 버전이 지정되지 않은 공유 라이브러리: .so, .so.version
  • 객체 파일: .o, .pic.o

...그리고 이러한 파일을 생성하는 모든 규칙을 따릅니다. 각 확장 프로그램은 사용할 수 있습니다.

additional_linker_inputs

List of labels; optional

이러한 파일을 C++ 링커 명령어에 전달합니다.

예를 들어 컴파일된 Windows .res 파일을 여기에 제공하여 바이너리 타겟입니다.

copts

List of strings; optional

이러한 옵션을 C++ 컴파일 명령어에 추가합니다. 'Make 변수' 대체 적용 Bourne 셸 토큰화.

이 속성의 각 문자열은 주어진 순서로 COPTS에 추가됩니다. 바이너리 타겟을 컴파일하는 것입니다 플래그는 이 타겟을 컴파일하는 경우에만 적용되며 종속 항목이므로 다른 곳에 포함된 헤더 파일에 주의하세요. 모든 경로는 현재 패키지가 아닌 작업공간을 기준으로 합니다.

패키지가 feature를 선언하는 경우 no_copts_tokenization, Bourne 셸 토큰화는 문자열에만 적용됨 단일 'Make'로 구성된 변수의 값을 지정합니다.

defines

List of strings; optional

컴파일 줄에 추가할 정의 목록입니다. 'Make' 적용 변수 대체와 Bourne 셸 토큰화. 각 문자열은 단일 Bourne 셸 토큰으로 구성되어야 합니다. 앞에 -D가 추가되고 이 타겟의 컴파일 명령줄에 추가됩니다. 여기에 종속된 모든 규칙에 적용됩니다. 이로 인해 광범위하고 강력한 효과를 낼 수 있습니다. 확실하지 않은 경우 정의 값을 대신 local_defines를 사용하세요.
includes

List of strings; optional

컴파일 줄에 추가할 include dir의 목록입니다.

'Make 변수' 대체 적용 각 문자열 앞에 -isystem가 추가되고 COPTS에 추가됩니다. COPTS와 달리 이러한 플래그는 이 규칙에 추가됩니다. 그것에 의존하는 모든 규칙이 있습니다. (참고: 적용 대상 규칙이 아님) CANNOT TRANSLATE 매우 주의해야 합니다. 광범위한 영향을 미칠 수 있기 때문입니다. 확실하지 않은 경우 다음을 추가하세요. '-I' 대신 플래그를 COPTS로 변경합니다.

헤더는 src 또는 hdrs에 추가해야 합니다. 그렇지 않으면 종속된 규칙을 설정할 수 없습니다 (기본값).

linkopts

List of strings; optional

다음 플래그를 C++ 링커 명령어에 추가합니다. 'Make' 적용 변수 대체를 사용하면 <ph type="x-smartling-placeholder"></ph> Bourne 셸 토큰화라벨 확장입니다. 이 속성의 각 문자열은 LINKOPTS에 추가됩니다. 바이너리 타겟을 연결하는 것입니다.

이 목록에서 $ 또는 -로 시작하지 않는 각 요소는 deps에 있는 대상의 라벨로 가정됩니다. 이 해당 타겟에 의해 생성된 파일 목록이 링커에 추가됨 있습니다. 라벨이 잘못되었거나 deps에 선언되지 않음

linkshared

Boolean; optional; nonconfigurable; default is False

공유 라이브러리를 만듭니다. 이 속성을 사용 설정하려면 규칙에 linkshared=True를 포함하세요. 기본적으로 이 옵션은 사용 중지되어 있습니다.

이 플래그가 있으면 -shared 플래그와 함께 연결됩니다. gcc에 로드되고, 그 결과로 생성되는 공유 라이브러리는 Java 프로그램을 예로 들 수 있습니다 하지만 빌드 목적으로는 특정 바이너리를 사용하여 빌드된 공유 라이브러리가 cc_binary 규칙은 다른 프로그램에 의해서만 수동으로 로드되므로, cc_library를 대체할 수 없음 있습니다. 확장성을 위해서는 이 접근 방식을 완전히 피하는 것이 좋습니다. java_librarycc_library 규칙에 의지하도록 함 하세요.

linkopts=['-static']linkshared=True를 모두 지정하는 경우 완전히 독립된 단일 유닛을 갖게 됩니다. 두 속성을 모두 지정하면 linkstatic=Truelinkshared=True의 경우 대부분 단일 독립 실행형 유닛입니다.

linkstatic

Boolean; optional; default is True

cc_binarycc_test: 정적으로 바이너리를 연결합니다. 있습니다. cc_library.linkstatic의 경우 아래를 참고하세요.

기본적으로 이 옵션은 cc_binary에는 사용 설정되어 있고 나머지 기기에는 사용 중지되어 있습니다.

이 옵션을 사용 설정하고 바이너리 또는 테스트인 경우 이 옵션을 사용하면 빌드 도구에 .so 대신 .a를 사용합니다. 일부 시스템 라이브러리는 정적 라이브러리가 없습니다. 따라서 결과 실행 파일은 여전히 동적으로 대부분 정적인 것입니다.

실행 파일을 연결하는 방법에는 세 가지가 있습니다.

  • 전체 정적 링크 기능이 있는 STATIC(모든 항목이 정적으로 링크됨) 예: 'gcc -static foo.o libbar.a libbaz.a -lm'.
    이 모드는 다음에서 fully_static_link를 지정하여 사용 설정됩니다. features 속성으로 이동합니다.
  • STATIC: 모든 사용자 라이브러리가 정적으로 링크됩니다 (정적 버전 사용 가능), 시스템 라이브러리 (C/C++ 런타임 라이브러리 제외) 동적으로 연결됩니다. 예: 'gcc foo.o libfoo.a libbaz.a -lm'.
    이 모드는 linkstatic=True를 지정하면 사용 설정됩니다.
  • DYNAMIC(모든 라이브러리가 동적으로 링크됨)(동적 버전이 사용 가능). 예: 'gcc foo.o libfoo.so libbaz.so -lm'.
    이 모드는 linkstatic=False를 지정하면 사용 설정됩니다.

linkstatic 속성은 cc_library() 규칙 C++ 라이브러리의 경우 linkstatic=True은 정적 연결이 허용되므로 .so가 생성되지 않습니다. linkstatic=False가 수행하는 작업 정적 라이브러리 생성을 막지 않습니다. 이 속성은 동적 라이브러리를 생성할 수 있습니다.

linkstatic=False이면 빌드 도구가 *.runfiles 영역에서 종속된 공유 라이브러리에 종속된 라이브러리를 표시합니다.

local_defines

List of strings; optional

컴파일 줄에 추가할 정의 목록입니다. 'Make' 적용 변수 대체와 Bourne 셸 토큰화. 각 문자열은 단일 Bourne 셸 토큰으로 구성되어야 합니다. 앞에 -D이 추가되고 이 타겟의 컴파일 명령줄에 추가됩니다. 종속 항목은 받지 않습니다.
malloc

Label; optional; default is @bazel_tools//tools/cpp:malloc

malloc의 기본 종속 항목을 재정의합니다.

기본적으로 C++ 바이너리는 //tools/cpp:malloc에 링크됩니다. 이는 빈 라이브러리이므로 바이너리는 libc malloc을 사용하게 됩니다. 이 라벨은 cc_library을 참조해야 합니다. 컴파일이 C++가 아닌 경우 이 옵션은 아무런 영향을 미치지 않습니다. 이 속성의 값은 linkshared=True를 지정한 경우

nocopts

String; optional

C++ 컴파일 명령어에서 일치 옵션을 삭제합니다. 'Make' 적용 변수 대체를 지원합니다. 이 속성의 값은 정규 표현식으로 해석됩니다. 이 정규 표현식과 일치하는 기존 COPTS (규칙의 copts 속성에 명시적으로 지정된 값 포함)은 COPTS는 이 규칙을 컴파일하기 위한 것입니다. 이 속성은 거의 필요하지 않습니다.
stamp

Integer; optional; default is -1

빌드 정보를 바이너리로 인코딩할지 여부입니다. 가능한 값은 다음과 같습니다. <ph type="x-smartling-placeholder">
    </ph>
  • stamp = 1: --nostamp 빌드 이 사용하지 않는 것이 좋습니다. 그러면 원격 캐싱이 중단될 가능성이 있기 때문입니다. 바이너리, 그리고 여기에 종속된 모든 다운스트림 작업을 처리합니다.
  • stamp = 0: 빌드 정보를 항상 상수 값으로 바꿉니다. 이 빌드 결과 캐싱이 잘 되고
  • stamp = -1: 빌드 정보의 삽입은 --[no]stamp 플래그

스탬프 처리된 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다.

win_def_file

Label; optional

링커에 전달할 Windows DEF 파일입니다.

이 속성은 Windows가 대상 플랫폼인 경우에만 사용해야 합니다. 내보내기 기호를 사용할 수 있습니다.

cc_import

cc_import(name, data, hdrs, alwayslink, compatible_with, deprecation, distribs, features, interface_library, licenses, restricted_to, shared_library, static_library, system_provided, tags, target_compatible_with, testonly, visibility)

cc_import 규칙을 사용하면 사용자가 사전 컴파일된 C/C++ 라이브러리를 가져올 수 있습니다.

일반적인 사용 사례는 다음과 같습니다.
1. 정적 라이브러리 연결

cc_import(
  name = "mylib",
  hdrs = ["mylib.h"],
  static_library = "libmylib.a",
  # If alwayslink is turned on,
  # libmylib.a will be forcely linked into any binary that depends on it.
  # alwayslink = 1,
)
드림 2. 공유 라이브러리 연결 (Unix)
cc_import(
  name = "mylib",
  hdrs = ["mylib.h"],
  shared_library = "libmylib.so",
)
드림 3. 공유 라이브러리를 인터페이스 라이브러리에 연결 (Windows)
cc_import(
  name = "mylib",
  hdrs = ["mylib.h"],
  # mylib.lib is a import library for mylib.dll which will be passed to linker
  interface_library = "mylib.lib",
  # mylib.dll will be available for runtime
  shared_library = "mylib.dll",
)
드림 4. 공유 라이브러리를 system_provided=True에 연결 (Windows)
cc_import(
  name = "mylib",
  hdrs = ["mylib.h"],
  # mylib.lib is an import library for mylib.dll which will be passed to linker
  interface_library = "mylib.lib",
  # mylib.dll is provided by system environment, for example it can be found in PATH.
  # This indicates that Bazel is not responsible for making mylib.dll available.
  system_provided = 1,
)
드림 5. 정적 라이브러리 또는 공유 라이브러리
에 연결 Unix의 경우:
cc_import(
  name = "mylib",
  hdrs = ["mylib.h"],
  static_library = "libmylib.a",
  shared_library = "libmylib.so",
)

# first will link to libmylib.a
cc_binary(
  name = "first",
  srcs = ["first.cc"],
  deps = [":mylib"],
  linkstatic = 1, # default value
)

# second will link to libmylib.so
cc_binary(
  name = "second",
  srcs = ["second.cc"],
  deps = [":mylib"],
  linkstatic = 0,
)
드림 Windows의 경우:
cc_import(
  name = "mylib",
  hdrs = ["mylib.h"],
  static_library = "libmylib.lib", # A normal static library
  interface_library = "mylib.lib", # An import library for mylib.dll
  shared_library = "mylib.dll",
)

# first will link to libmylib.lib
cc_binary(
  name = "first",
  srcs = ["first.cc"],
  deps = [":mylib"],
  linkstatic = 1, # default value
)

# second will link to mylib.dll through mylib.lib
cc_binary(
  name = "second",
  srcs = ["second.cc"],
  deps = [":mylib"],
  linkstatic = 0,
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

hdrs

List of labels; optional

에 의해 게시된 헤더 파일의 목록 종속 규칙의 소스에 의해 직접 포함됩니다.

Boolean; optional; default is False

1이면 이 C++에 (직접 또는 간접적으로) 종속되는 모든 바이너리 사전 컴파일된 라이브러리는 정적 라이브러리에 보관된 모든 객체 파일에서 링크됩니다. 바이너리에서 참조하는 기호가 일부 포함되어 있지 않더라도 말이죠. 이는 코드가 바이너리(예: 코드가 콜백을 수신하도록 등록되는 경우) 제공할 수 있습니다

항상 링크가 Windows의 VS 2017에서 작동하지 않는다면 알려진 문제, VS 2017을 최신 버전으로 업그레이드하세요.

interface_library

Label; optional

공유 라이브러리 연결을 위한 단일 인터페이스 라이브러리.

허용되는 파일 형식은 다음과 같습니다. .ifso, .tbd, .lib, .so 또는 .dylib

shared_library

Label; optional

사전 컴파일된 단일 공유 라이브러리 Bazel은 종속되는 바이너리를 생성합니다.

허용되는 파일 형식은 다음과 같습니다. .so, .dll 또는 .dylib

static_library

Label; optional

사전 컴파일된 단일 정적 라이브러리

허용되는 파일 형식은 다음과 같습니다. .a, .pic.a 또는 .lib

system_provided

Boolean; optional; default is False

1이면 런타임에 필요한 공유 라이브러리가 시스템에서 제공되었음을 나타냅니다. 포함 이 경우 interface_library를 지정해야 하며 shared_library는 비어 있어야 합니다.

cc_library

cc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, exec_compatible_with, exec_properties, features, implementation_deps, include_prefix, includes, licenses, linkopts, linkstamp, linkstatic, local_defines, nocopts, restricted_to, strip_include_prefix, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, win_def_file)

헤더 포함 확인

빌드에 사용되는 모든 헤더 파일은 hdrs 또는 규칙 cc_*개 중 srcs개 이는 시행되는 조치입니다.

cc_library 규칙의 경우 hdrs의 헤더는 다음의 공개 인터페이스로 구성됩니다. 라이브러리에 추가되어야 하며 hdrs 및 라이브러리 자체의 srcshdrs의 파일에서 deps에 라이브러리를 나열하는 규칙 cc_*개 중 srcs개입니다. srcs의 헤더는 hdrs에 있는 파일에서만 직접 포함되어야 합니다. 및 라이브러리 자체의 srcs입니다. 헤더를 삽입할지 여부를 결정할 때는 hdrs 또는 srcs 중 어느 쪽이든 이 라이브러리의 소비자를 원하는지 물어봐야 합니다. 직접 포함할 수 있습니다. 이 결정은 Ad Exchange의 프로그래밍 언어로 publicprivate 공개 상태

cc_binarycc_test 규칙은 내보낸 인터페이스가 없으므로 또한 hdrs 속성이 없습니다. 바이너리 또는 테스트에 속하는 모든 헤더 srcs에 직접 나열되어야 합니다.

이러한 규칙을 설명하려면 다음 예를 참고하세요.

cc_binary(
    name = "foo",
    srcs = [
        "foo.cc",
        "foo.h",
    ],
    deps = [":bar"],
)

cc_library(
    name = "bar",
    srcs = [
        "bar.cc",
        "bar-impl.h",
    ],
    hdrs = ["bar.h"],
    deps = [":baz"],
)

cc_library(
    name = "baz",
    srcs = [
        "baz.cc",
        "baz-impl.h",
    ],
    hdrs = ["baz.h"],
)

이 예에서 허용되는 직접 포함은 아래 표에 나와 있습니다. 예: foo.ccfoo.hbar.h를 직접 포함할 수 있지만 baz.h가 아닙니다.

파일 포함허용되는 포함
foo.hbar.h
foo.ccfoo.h bar.h
bar.hbar-impl.h baz.h
bar-impl.hbar.h baz.h
bar.ccbar.h bar-impl.h baz.h
baz.hbaz-impl.h
baz-impl.hbaz.h
baz.ccbaz.h baz-impl.h

포함 확인 규칙은 직접 포함되지 않습니다. 위의 예에서 foo.ccbar.h를 포함하며, 여기에는 baz.h도 포함될 수 있고, baz-impl.h를 포함할 수 있습니다. 기술적으로 .cc 파일의 컴파일에는 모든 헤더가 전이적으로 포함될 수 있음 파일(hdrs 또는 srcs)에 전이적 deps 클로저의 모든 cc_library 포함 이 경우 컴파일러는 baz.hbaz-impl.h를 읽을 수 있습니다. foo.cc를 컴파일할 때. foo.cc는 컴파일되어서는 안 됨 #include "baz.h"를 포함해야 합니다. 이를 위해서는 허용되는 경우 bazdeps에 추가해야 합니다. /foo

안타깝게도 Bazel은 현재 직접과 임시를 구분할 수 없습니다. 포함하므로, 파일에 전이적으로만 포함될 수 있는 헤더입니다. 예를 들어 위의 예시에서 Bazel은 foo.cc를 직접 호출하지 않습니다. baz.h 포함 이는 불법입니다. foo baz에 직접 종속되지 않습니다. 현재 오류가 발생하지 않습니다. 향후 이러한 오류 검사가 추가될 수 있습니다.

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

바이너리 타겟에 연결할 다른 라이브러리의 목록입니다.

cc_library 또는 objc_library일 수 있습니다. 있습니다

srcs

List of labels; optional

타겟을 생성하기 위해 처리되는 C 및 C++ 파일의 목록입니다. 이 파일은 C/C++ 소스 및 헤더 파일로, 생성되지 않은 (일반 소스) 생성됩니다.

모든 .cc, .c, .cpp 파일이 실행됩니다. 컴파일해야 합니다 다음과 같은 파일이 생성될 수 있습니다. 이름이 지정된 파일이 다른 규칙의 outs, 이 규칙 자동으로 다른 규칙에 종속됩니다.

.h 파일은 컴파일되지 않지만 다음에서 사용할 수 있습니다. 포함할 수 없습니다. .cc.h 파일은 srcs 또는 hdrs deps 인수입니다.

모든 #included 파일은 이 규칙의 srcs 속성 또는 참조된 cc_library()hdrs 속성입니다. 권장되는 스타일은 라이브러리와 연결된 헤더가 라이브러리의 hdrs 속성에 나열되고 이 규칙의 소스와 연결된 헤더 srcs '헤더 포함 확인'을 참고하세요. 를 참조하세요.

규칙의 이름이 srcs에 있는 경우 이 규칙은 자동으로 그것에 의존합니다. 이름이 지정된 규칙의 outs가 C 또는 C++인 경우 이 규칙으로 컴파일됩니다. 라이브러리 파일인 경우 연결됩니다.

허용되는 srcs 파일 형식은 다음과 같습니다.

  • C 및 C++ 소스 파일: .c, .cc, .cpp .cxx님, .c++님, .C
  • C 및 C++ 헤더 파일: .h, .hh, .hpp .hxx님, .inc님, .inl님, .H
  • C 전처리기가 있는 어셈블러: .S
  • 보관처리: .a, .pic.a
  • '항상 링크' 라이브러리: .lo, .pic.lo
  • 버전이 지정되거나 버전이 지정되지 않은 공유 라이브러리: .so, .so.version
  • 객체 파일: .o, .pic.o

그리고 이러한 파일을 생성하는 모든 규칙을 따릅니다. 각 확장 프로그램은 사용할 수 있습니다.

hdrs

List of labels; optional

에 의해 게시된 헤더 파일의 목록 종속 규칙의 소스에서 직접 포함할 수 있습니다.

이 위치는 헤더 파일을 선언하는 데 적극 권장되는 위치입니다. 라이브러리에 대한 인터페이스를 설명합니다. 이 헤더는 이 규칙 또는 종속 규칙에 소스별로 포함할 수 있습니다. 이 라이브러리의 클라이언트에 의해 포함되지 않아야 하는 헤더는 srcs 속성에 나열됩니다. 포함된다는 사실을 기억하세요 '헤더 포함'을 확인에서 자세한 설명을 확인하세요.

Boolean; optional; default is False

1이면 이 C++에 (직접 또는 간접적으로) 종속되는 모든 바이너리 라이브러리는 목록에 있는 파일에 대한 모든 객체 파일에서 srcs: 바이너리에서 참조하는 기호가 일부 포함되어 있지 않은 경우에도 마찬가지입니다. 이는 코드가 바이너리(예: 코드가 콜백을 수신하도록 등록되는 경우) 제공할 수 있습니다

항상 링크가 Windows의 VS 2017에서 작동하지 않는다면 알려진 문제, VS 2017을 최신 버전으로 업그레이드하세요.

copts

List of strings; optional

이러한 옵션을 C++ 컴파일 명령어에 추가합니다. 'Make 변수' 대체 적용 Bourne 셸 토큰화.

이 속성의 각 문자열은 주어진 순서로 COPTS에 추가됩니다. 바이너리 타겟을 컴파일하는 것입니다 플래그는 이 타겟을 컴파일하는 경우에만 적용되며 종속 항목이므로 다른 곳에 포함된 헤더 파일에 주의하세요. 모든 경로는 현재 패키지가 아닌 작업공간을 기준으로 합니다.

패키지가 feature를 선언하는 경우 no_copts_tokenization, Bourne 셸 토큰화는 문자열에만 적용됨 단일 'Make'로 구성된 변수의 값을 지정합니다.

defines

List of strings; optional

컴파일 줄에 추가할 정의 목록입니다. 'Make' 적용 변수 대체와 Bourne 셸 토큰화. 각 문자열은 단일 Bourne 셸 토큰으로 구성되어야 합니다. 앞에 -D가 추가되고 이 타겟의 컴파일 명령줄에 추가됩니다. 여기에 종속된 모든 규칙에 적용됩니다. 이로 인해 광범위하고 강력한 효과를 낼 수 있습니다. 확실하지 않은 경우 정의 값을 대신 local_defines를 사용하세요.
implementation_deps

List of labels; optional

라이브러리 타겟이 의존하는 다른 라이브러리의 목록입니다. 좋아요 취소 deps - 이러한 라이브러리 (및 모든 라이브러리의 헤더) 및 포함 경로 전이 deps)는 이 라이브러리의 컴파일에만 사용되며, 있습니다. implementation_deps로 지정된 라이브러리가 아직 연결되어 있음 바이너리 타겟을 생성합니다.

현재 사용은 cc_library로 제한되며 플래그로 보호됩니다. --experimental_cc_implementation_deps

include_prefix

String; optional

이 규칙의 헤더 경로에 추가할 프리픽스입니다.

설정하면 이 규칙의 hdrs 속성에 있는 헤더에 액세스할 수 있습니다. at은 저장소 기준 경로 앞에 추가된 이 속성의 값입니다.

strip_include_prefix 속성의 접두사는 이 속성을 사용하기 전에 삭제됩니다. 가 추가됩니다.

includes

List of strings; optional

컴파일 줄에 추가할 include dir의 목록입니다.

'Make 변수' 대체 적용 각 문자열 앞에 -isystem가 추가되고 COPTS에 추가됩니다. COPTS와 달리 이러한 플래그는 이 규칙에 추가됩니다. 그것에 의존하는 모든 규칙이 있습니다. (참고: 적용 대상 규칙이 아님) CANNOT TRANSLATE 매우 주의해야 합니다. 광범위한 영향을 미칠 수 있기 때문입니다. 확실하지 않은 경우 다음을 추가하세요. '-I' 대신 플래그를 COPTS로 변경합니다.

헤더는 src 또는 hdrs에 추가해야 합니다. 그렇지 않으면 종속된 규칙을 설정할 수 없습니다 (기본값).

linkopts

List of strings; optional

다음 플래그를 C++ 링커 명령어에 추가합니다. 'Make' 적용 변수 대체를 사용하면 <ph type="x-smartling-placeholder"></ph> Bourne 셸 토큰화라벨 확장입니다. 이 속성의 각 문자열은 LINKOPTS에 추가됩니다. 바이너리 타겟을 연결하는 것입니다.

이 목록에서 $ 또는 -로 시작하지 않는 각 요소는 deps에 있는 대상의 라벨로 가정됩니다. 이 해당 타겟에 의해 생성된 파일 목록이 링커에 추가됨 있습니다. 라벨이 잘못되었거나 deps에 선언되지 않음

linkstamp

Label; optional

지정된 C++ 소스 파일을 동시에 컴파일하고 바이너리입니다. 이 속임수는 타임스탬프를 도입하기 위해 필요합니다 바이너리로 변환합니다 소스 파일을 객체 파일을 평소처럼 사용하면 타임스탬프가 올바르지 않게 됩니다. 링크 스탬프 컴파일에는 특정 스크립트 세트를 포함할 수 없습니다. 따라서 특정 플래그에 종속되어서는 안 되므로 또는 기타 빌드 변수를 설정할 수 있습니다. 이 옵션은 base 패키지.
linkstatic

Boolean; optional; default is False

cc_binarycc_test: 정적으로 바이너리를 연결합니다. 있습니다. cc_library.linkstatic의 경우 아래를 참고하세요.

기본적으로 이 옵션은 cc_binary에는 사용 설정되어 있고 나머지 기기에는 사용 중지되어 있습니다.

이 옵션을 사용 설정하고 바이너리 또는 테스트인 경우 이 옵션을 사용하면 빌드 도구에 .so 대신 .a를 사용합니다. 일부 시스템 라이브러리는 정적 라이브러리가 없습니다. 따라서 결과 실행 파일은 여전히 동적으로 대부분 정적인 것입니다.

실행 파일을 연결하는 방법에는 세 가지가 있습니다.

  • 전체 정적 링크 기능이 있는 STATIC(모든 항목이 정적으로 링크됨) 예: 'gcc -static foo.o libbar.a libbaz.a -lm'.
    이 모드는 다음에서 fully_static_link를 지정하여 사용 설정됩니다. features 속성으로 이동합니다.
  • STATIC: 모든 사용자 라이브러리가 정적으로 링크됩니다 (정적 버전 사용 가능), 시스템 라이브러리 (C/C++ 런타임 라이브러리 제외) 동적으로 연결됩니다. 예: 'gcc foo.o libfoo.a libbaz.a -lm'.
    이 모드는 linkstatic=True를 지정하면 사용 설정됩니다.
  • DYNAMIC(모든 라이브러리가 동적으로 링크됨)(동적 버전이 사용 가능). 예: 'gcc foo.o libfoo.so libbaz.so -lm'.
    이 모드는 linkstatic=False를 지정하면 사용 설정됩니다.

linkstatic 속성은 cc_library() 규칙 C++ 라이브러리의 경우 linkstatic=True은 정적 연결이 허용되므로 .so가 생성되지 않습니다. linkstatic=False가 수행하는 작업 정적 라이브러리 생성을 막지 않습니다. 이 속성은 동적 라이브러리를 생성할 수 있습니다.

linkstatic=False이면 빌드 도구가 *.runfiles 영역에서 종속된 공유 라이브러리에 종속된 라이브러리를 표시합니다.

local_defines

List of strings; optional

컴파일 줄에 추가할 정의 목록입니다. 'Make' 적용 변수 대체와 Bourne 셸 토큰화. 각 문자열은 단일 Bourne 셸 토큰으로 구성되어야 합니다. 앞에 -D이 추가되고 이 타겟의 컴파일 명령줄에 추가됩니다. 종속 항목은 받지 않습니다.
nocopts

String; optional

C++ 컴파일 명령어에서 일치 옵션을 삭제합니다. 'Make' 적용 변수 대체를 지원합니다. 이 속성의 값은 정규 표현식으로 해석됩니다. 이 정규 표현식과 일치하는 기존 COPTS (규칙의 copts 속성에 명시적으로 지정된 값 포함)은 COPTS는 이 규칙을 컴파일하기 위한 것입니다. 이 속성은 거의 필요하지 않습니다.
strip_include_prefix

String; optional

이 규칙의 헤더 경로에서 제거할 프리픽스입니다.

설정하면 이 규칙의 hdrs 속성에 있는 헤더에 액세스할 수 있습니다. 해당 경로에서 이 접두사를 잘라냅니다.

상대 경로인 경우 패키지에 상대적인 경로로 간주됩니다. 절댓값인 경우 저장소 기준 경로로 이해됩니다.

include_prefix 속성의 접두사는 이 접두사가 합니다.

textual_hdrs

List of labels; optional

에 의해 게시된 헤더 파일의 목록 이 라이브러리를 종속 규칙의 소스에서 텍스트 형식으로 포함합니다.

자체적으로 컴파일할 수 없는 헤더 파일을 선언하는 위치입니다. 즉, 유효한 HTML 파일을 빌드하려면 항상 다른 소스 파일에 의해 있습니다.

win_def_file

Label; optional

링커에 전달할 Windows DEF 파일입니다.

이 속성은 Windows가 대상 플랫폼인 경우에만 사용해야 합니다. 내보내기 기호를 사용할 수 있습니다.

cc_proto_library

cc_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

cc_proto_library.proto 파일에서 C++ 코드를 생성합니다.

deps은(는) proto_library 규칙을 가리켜야 합니다.

예:

cc_library(
    name = "lib",
    deps = [":foo_cc_proto"],
)

cc_proto_library(
    name = "foo_cc_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

proto_library의 목록 C++ 코드를 생성할 수 있습니다.

fdo_prefetch_hints

fdo_prefetch_hints(name, compatible_with, deprecation, distribs, features, licenses, profile, restricted_to, tags, target_compatible_with, testonly, visibility)

작업공간에 있거나 지정된 위치에 있는 FDO 미리 가져오기 힌트 프로필을 나타냅니다. 절대 경로입니다. 예:

fdo_prefetch_hints(
    name = "hints",
    profile = "//path/to/hints:profile.afdo",
)

fdo_profile(
  name = "hints_abs",
  absolute_path_profile = "/absolute/path/profile.afdo",
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

profile

Label; optional

힌트 프로필의 라벨입니다. 힌트 파일의 확장자는 .afdo입니다. 라벨은 fdo_ 절대_경로_프로필 규칙을 가리킬 수도 있습니다.

fdo_profile

fdo_profile(name, absolute_path_profile, compatible_with, deprecation, distribs, features, licenses, profile, proto_profile, restricted_to, tags, target_compatible_with, testonly, visibility)

작업공간 또는 지정된 절대 경로에 있는 FDO 프로필을 나타냅니다. 예:

fdo_profile(
    name = "fdo",
    profile = "//path/to/fdo:profile.zip",
)

fdo_profile(
  name = "fdo_abs",
  absolute_path_profile = "/absolute/path/profile.zip",
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

absolute_path_profile

String; optional

FDO 프로필의 절대 경로입니다. FDO 파일의 확장자는 다음 중 하나입니다. 색인이 생성되지 않은 LLVM 프로필의 경우 .profraw, 색인이 생성된 LLVM 프로필의 경우 .profdata, .zip LLVM profraw 프로필 또는 AutoFDO 프로필의 경우 .afdo가 있습니다.
profile

Label; optional

FDO 프로필 또는 이 프로필을 생성하는 규칙의 라벨입니다. FDO 파일에는 확장 프로그램: 색인이 생성되지 않은 LLVM 프로필의 경우 .profraw, 색인이 생성된 LLVM의 경우 .profdata LLVM profraw 프로필을 포함하는 .zip, AutoFDO 프로필을 포함하는 .afdo, XBinary 프로필. 라벨은 fdo_ 절대_경로_프로필 규칙을 가리킬 수도 있습니다.
proto_profile

Label; optional

protobuf 프로필의 라벨

propeller_optimize

propeller_optimize(name, compatible_with, deprecation, distribs, features, ld_profile, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

작업공간의 프로펠러 최적화 프로필을 나타냅니다. 예:

propeller_optimize(
    name = "layout",
    cc_profile = "//path:cc_profile.txt",
    ld_profile = "//path:ld_profile.txt"
)

propeller_optimize(
    name = "layout_absolute",
    absolute_cc_profile = "/absolute/cc_profile.txt",
    absolute_ld_profile = "/absolute/ld_profile.txt"
)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

ld_profile

Label; optional

연결 작업에 전달된 프로필의 라벨입니다. 이 파일에는 .txt 확장자로 저장되어야 합니다.

cc_test

cc_test(name, deps, srcs, data, additional_linker_inputs, args, compatible_with, copts, defines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, includes, licenses, linkopts, linkstatic, local, local_defines, malloc, nocopts, restricted_to, shard_count, size, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility, win_def_file)

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

deps

List of labels; optional

바이너리 타겟에 연결할 다른 라이브러리의 목록입니다.

cc_library 또는 objc_library일 수 있습니다. 있습니다

srcs

List of labels; optional

타겟을 생성하기 위해 처리되는 C 및 C++ 파일의 목록입니다. 이 파일은 C/C++ 소스 및 헤더 파일로, 생성되지 않은 (일반 소스) 생성됩니다.

모든 .cc, .c, .cpp 파일이 실행됩니다. 컴파일해야 합니다 다음과 같은 파일이 생성될 수 있습니다. 이름이 지정된 파일이 다른 규칙의 outs, 이 규칙 자동으로 다른 규칙에 종속됩니다.

.h 파일은 컴파일되지 않지만 다음에서 사용할 수 있습니다. 포함할 수 없습니다. .cc.h 파일은 srcs 또는 hdrs deps 인수입니다.

모든 #included 파일은 이 규칙의 srcs 속성 또는 참조된 cc_library()hdrs 속성입니다. 권장되는 스타일은 라이브러리와 연결된 헤더가 라이브러리의 hdrs 속성에 나열되고 이 규칙의 소스와 연결된 헤더 srcs '헤더 포함 확인'을 참고하세요. 를 참조하세요.

규칙의 이름이 srcs에 있는 경우 이 규칙은 자동으로 그것에 의존합니다. 이름이 지정된 규칙의 outs가 C 또는 C++인 경우 이 규칙으로 컴파일됩니다. 라이브러리 파일인 경우 연결됩니다.

허용되는 srcs 파일 형식은 다음과 같습니다.

  • C 및 C++ 소스 파일: .c, .cc, .cpp .cxx님, .c++님, .C
  • C 및 C++ 헤더 파일: .h, .hh, .hpp .hxx님, .inc님, .inl님, .H
  • C 전처리기가 있는 어셈블러: .S
  • 보관처리: .a, .pic.a
  • '항상 링크' 라이브러리: .lo, .pic.lo
  • 버전이 지정되거나 버전이 지정되지 않은 공유 라이브러리: .so, .so.version
  • 객체 파일: .o, .pic.o

...그리고 이러한 파일을 생성하는 모든 규칙을 따릅니다. 각 확장 프로그램은 사용할 수 있습니다.

additional_linker_inputs

List of labels; optional

이러한 파일을 C++ 링커 명령어에 전달합니다.

예를 들어 컴파일된 Windows .res 파일을 여기에 제공하여 바이너리 타겟입니다.

copts

List of strings; optional

이러한 옵션을 C++ 컴파일 명령어에 추가합니다. 'Make 변수' 대체 적용 Bourne 셸 토큰화.

이 속성의 각 문자열은 주어진 순서로 COPTS에 추가됩니다. 바이너리 타겟을 컴파일하는 것입니다 플래그는 이 타겟을 컴파일하는 경우에만 적용되며 종속 항목이므로 다른 곳에 포함된 헤더 파일에 주의하세요. 모든 경로는 현재 패키지가 아닌 작업공간을 기준으로 합니다.

패키지가 feature를 선언하는 경우 no_copts_tokenization, Bourne 셸 토큰화는 문자열에만 적용됨 단일 'Make'로 구성된 변수의 값을 지정합니다.

defines

List of strings; optional

컴파일 줄에 추가할 정의 목록입니다. 'Make' 적용 변수 대체와 Bourne 셸 토큰화. 각 문자열은 단일 Bourne 셸 토큰으로 구성되어야 합니다. 앞에 -D가 추가되고 이 타겟의 컴파일 명령줄에 추가됩니다. 여기에 종속된 모든 규칙에 적용됩니다. 이로 인해 광범위하고 강력한 효과를 낼 수 있습니다. 확실하지 않은 경우 정의 값을 대신 local_defines를 사용하세요.
includes

List of strings; optional

컴파일 줄에 추가할 include dir의 목록입니다.

'Make 변수' 대체 적용 각 문자열 앞에 -isystem가 추가되고 COPTS에 추가됩니다. COPTS와 달리 이러한 플래그는 이 규칙에 추가됩니다. 그것에 의존하는 모든 규칙이 있습니다. (참고: 적용 대상 규칙이 아님) CANNOT TRANSLATE 매우 주의해야 합니다. 광범위한 영향을 미칠 수 있기 때문입니다. 확실하지 않은 경우 다음을 추가하세요. '-I' 대신 플래그를 COPTS로 변경합니다.

헤더는 src 또는 hdrs에 추가해야 합니다. 그렇지 않으면 종속된 규칙을 설정할 수 없습니다 (기본값).

linkopts

List of strings; optional

다음 플래그를 C++ 링커 명령어에 추가합니다. 'Make' 적용 변수 대체를 사용하면 <ph type="x-smartling-placeholder"></ph> Bourne 셸 토큰화라벨 확장입니다. 이 속성의 각 문자열은 LINKOPTS에 추가됩니다. 바이너리 타겟을 연결하는 것입니다.

이 목록에서 $ 또는 -로 시작하지 않는 각 요소는 deps에 있는 대상의 라벨로 가정됩니다. 이 해당 타겟에 의해 생성된 파일 목록이 링커에 추가됨 있습니다. 라벨이 잘못되었거나 deps에 선언되지 않음

linkstatic

Boolean; optional; default is False

cc_binarycc_test: 정적으로 바이너리를 연결합니다. 있습니다. cc_library.linkstatic의 경우 아래를 참고하세요.

기본적으로 이 옵션은 cc_binary에는 사용 설정되어 있고 나머지 기기에는 사용 중지되어 있습니다.

이 옵션을 사용 설정하고 바이너리 또는 테스트인 경우 이 옵션을 사용하면 빌드 도구에 .so 대신 .a를 사용합니다. 일부 시스템 라이브러리는 정적 라이브러리가 없습니다. 따라서 결과 실행 파일은 여전히 동적으로 대부분 정적인 것입니다.

실행 파일을 연결하는 방법에는 세 가지가 있습니다.

  • 전체 정적 링크 기능이 있는 STATIC(모든 항목이 정적으로 링크됨) 예: 'gcc -static foo.o libbar.a libbaz.a -lm'.
    이 모드는 다음에서 fully_static_link를 지정하여 사용 설정됩니다. features 속성으로 이동합니다.
  • STATIC: 모든 사용자 라이브러리가 정적으로 링크됩니다 (정적 버전 사용 가능), 시스템 라이브러리 (C/C++ 런타임 라이브러리 제외) 동적으로 연결됩니다. 예: 'gcc foo.o libfoo.a libbaz.a -lm'.
    이 모드는 linkstatic=True를 지정하면 사용 설정됩니다.
  • DYNAMIC(모든 라이브러리가 동적으로 링크됨)(동적 버전이 사용 가능). 예: 'gcc foo.o libfoo.so libbaz.so -lm'.
    이 모드는 linkstatic=False를 지정하면 사용 설정됩니다.

linkstatic 속성은 cc_library() 규칙 C++ 라이브러리의 경우 linkstatic=True은 정적 연결이 허용되므로 .so가 생성되지 않습니다. linkstatic=False가 수행하는 작업 정적 라이브러리 생성을 막지 않습니다. 이 속성은 동적 라이브러리를 생성할 수 있습니다.

linkstatic=False이면 빌드 도구가 *.runfiles 영역에서 종속된 공유 라이브러리에 종속된 라이브러리를 표시합니다.

local_defines

List of strings; optional

컴파일 줄에 추가할 정의 목록입니다. 'Make' 적용 변수 대체와 Bourne 셸 토큰화. 각 문자열은 단일 Bourne 셸 토큰으로 구성되어야 합니다. 앞에 -D이 추가되고 이 타겟의 컴파일 명령줄에 추가됩니다. 종속 항목은 받지 않습니다.
malloc

Label; optional; default is @bazel_tools//tools/cpp:malloc

malloc의 기본 종속 항목을 재정의합니다.

기본적으로 C++ 바이너리는 //tools/cpp:malloc에 링크됩니다. 이는 빈 라이브러리이므로 바이너리는 libc malloc을 사용하게 됩니다. 이 라벨은 cc_library을 참조해야 합니다. 컴파일이 C++가 아닌 경우 이 옵션은 아무런 영향을 미치지 않습니다. 이 속성의 값은 linkshared=True를 지정한 경우

nocopts

String; optional

C++ 컴파일 명령어에서 일치 옵션을 삭제합니다. 'Make' 적용 변수 대체를 지원합니다. 이 속성의 값은 정규 표현식으로 해석됩니다. 이 정규 표현식과 일치하는 기존 COPTS (규칙의 copts 속성에 명시적으로 지정된 값 포함)은 COPTS는 이 규칙을 컴파일하기 위한 것입니다. 이 속성은 거의 필요하지 않습니다.
stamp

Integer; optional; default is 0

빌드 정보를 바이너리로 인코딩할지 여부입니다. 가능한 값은 다음과 같습니다. <ph type="x-smartling-placeholder">
    </ph>
  • stamp = 1: --nostamp 빌드 이 사용하지 않는 것이 좋습니다. 그러면 원격 캐싱이 중단될 가능성이 있기 때문입니다. 바이너리 및 여기에 종속된 모든 다운스트림 작업을 처리합니다.
  • stamp = 0: 빌드 정보를 항상 상수 값으로 바꿉니다. 이 빌드 결과 캐싱이 잘 되고
  • stamp = -1: 빌드 정보의 삽입은 --[no]stamp 플래그

스탬프 처리된 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다.

win_def_file

Label; optional

링커에 전달할 Windows DEF 파일입니다.

이 속성은 Windows가 대상 플랫폼인 경우에만 사용해야 합니다. 내보내기 기호를 사용할 수 있습니다.

cc_toolchain

cc_toolchain(name, all_files, ar_files, as_files, compatible_with, compiler, compiler_files, compiler_files_without_includes, coverage_files, cpu, deprecation, distribs, dwp_files, dynamic_runtime_lib, exec_transition_for_inputs, features, libc_top, licenses, linker_files, module_map, objcopy_files, restricted_to, static_runtime_lib, strip_files, supports_header_parsing, supports_param_files, tags, target_compatible_with, testonly, toolchain_config, toolchain_identifier, visibility)

C++ 도구 모음을 나타냅니다.

이 규칙의 역할:

  • C++ 작업을 실행하는 데 필요한 모든 아티팩트 수집 이는 속성(예: all_files, compiler_files, linker_files 또는 _files로 끝나는 기타 속성) 이는 모든 필수 파일을 글로빙하는 가장 일반적인 파일 그룹입니다.
  • C++ 작업을 위한 올바른 명령줄 생성 이 작업은 CcToolchainConfigInfo 제공업체 (아래 세부정보 참고)

toolchain_config 속성을 사용하여 C++ 도구 모음을 구성합니다. 참고 항목 <ph type="x-smartling-placeholder"></ph> 페이지 을 참조하세요.

도구 모음이 빌드 및 구성되지 않도록 하려면 tags = ["manual"] 사용 bazel build //... 호출 시 불필요하게

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

all_files

Label; required

모든 cc_툴체인 아티팩트 컬렉션입니다. 이러한 아티팩트는 모든 rules_cc 관련 작업( 아티팩트가 있음). Bazel은 all_files를 상위 집합이라고 가정합니다. 아티팩트를 제공하는 다른 모든 속성입니다 (예: linkstamp 컴파일에는 두 가지 모두 컴파일이 필요함). 링크 파일도 포함되므로 all_files가 필요합니다.

cc_toolchain.files에 포함된 내용이며 모든 Starlark에서 사용합니다. C++ 도구 모음을 사용하여 규칙을 구현하는 방법을 보여줍니다.

ar_files

Label; optional

보관처리 작업에 필요한 모든 cc_Tools 아티팩트 컬렉션입니다.

as_files

Label; optional

어셈블리 작업에 필요한 모든 cc_툴체인 아티팩트의 컬렉션입니다.

compiler

String; optional; nonconfigurable

지원 중단되었습니다. 대신 toolchain_identifier 속성을 사용하세요. 곧 버벅거림이 될 거예요 이후 <ph type="x-smartling-placeholder"></ph> Starlark로 CROSSTOOL 이전 에 게시되며 다음 기한까지 삭제됩니다. #7075

설정되면 crosstool_config.툴체인 선택을 수행하는 데 사용됩니다. 소요 시간 --cpu Bazel 옵션보다 우선 적용

compiler_files

Label; required

컴파일 작업에 필요한 모든 cc_툴체인 아티팩트의 컬렉션입니다.
compiler_files_without_includes

Label; optional

다음의 경우 컴파일 작업에 필요한 모든 cc_툴체인 아티팩트의 컬렉션입니다. 입력 검색이 지원됩니다 (현재 Google에서만 지원).
coverage_files

Label; optional

적용 범위 작업에 필요한 모든 cc_툴체인 아티팩트의 컬렉션입니다. 지정하지 않으면 all_files가 사용됩니다.
cpu

String; optional; nonconfigurable

지원 중단되었습니다. 대신 툴체인_식별자 속성을 사용하세요. 이후에는 Starlark로 CROSSTOOL 이전 에 게시되며 다음 기한까지 삭제됩니다. #7075

설정되면 crosstool_config.툴체인 선택을 수행하는 데 사용됩니다. 소요 시간 --cpu Bazel 옵션보다 우선 적용

dwp_files

Label; required

dwp 작업에 필요한 모든 cc_Tools 아티팩트의 컬렉션입니다.
dynamic_runtime_lib

Label; optional

C++ 런타임 라이브러리의 동적 라이브러리 아티팩트 (예: libstdc++.so)입니다.

'static_link_cpp_runtimes' 기능이 사용 설정되었으며 동적으로 종속됩니다.

exec_transition_for_inputs

Boolean; optional; default is True

True로 설정하여 exec 플랫폼의 cc_툴체인에 모든 파일 입력을 빌드합니다. 를 사용하는 것이 좋습니다 (즉, 기본적으로 타겟 플랫폼).
libc_top

Label; optional

작업을 컴파일/연결하기 위해 입력으로 전달된 libc의 아티팩트 모음입니다.
linker_files

Label; required

연결 작업에 필요한 모든 cc_툴체인 아티팩트의 컬렉션입니다.
module_map

Label; optional

모듈식 빌드에 사용할 모듈 맵 아티팩트입니다.
objcopy_files

Label; required

objcopy 작업에 필요한 모든 cc_Tools 아티팩트의 컬렉션입니다.
static_runtime_lib

Label; optional

C++ 런타임 라이브러리의 정적 라이브러리 아티팩트 (예: libstdc++.a)입니다.

'static_link_cpp_runtimes' 기능이 사용 설정되었으며 종속 항목을 정적으로 정의합니다

strip_files

Label; required

스트립 작업에 필요한 모든 cc_Tools 아티팩트의 컬렉션입니다.
supports_header_parsing

Boolean; optional; default is False

cc_툴체인이 헤더 파싱 작업을 지원하면 True로 설정됩니다.
supports_param_files

Boolean; optional; default is True

cc_툴체인이 연결 작업에 매개변수 파일 사용을 지원하는 경우 True로 설정합니다.
toolchain_config

Label; required

cc_toolchain_config_info를 제공하는 규칙의 라벨입니다.
toolchain_identifier

String; optional; nonconfigurable

이 cc_툴체인과 해당 툴체인을 일치시키는 데 사용되는 식별자 crosstool_config.toolchain.

#5380 문제가 해결될 때까지 cc_toolchain과(와) CROSSTOOL.toolchain입니다. toolchain_config로 대체됩니다. 속성 (#5380)

cc_toolchain_suite

cc_toolchain_suite(name, compatible_with, deprecation, distribs, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)

C++ 도구 모음 모음을 나타냅니다.

이 규칙의 역할:

  • 모든 관련 C++ 도구 모음 수집
  • --cpu--compiler 옵션에 따라 하나의 도구 모음 선택 Bazel로 전달됩니다

참고 항목 <ph type="x-smartling-placeholder"></ph> 페이지 을 참조하세요.

인수

속성
name

Name; required

이 대상의 고유한 이름입니다.

toolchains

Dictionary mapping strings to labels; required; nonconfigurable

'<cpu>'의 지도 또는 "<cpu>|<compiler>' 문자열을 cc_toolchain 라벨 "<cpu>" --cpu인 경우에만 사용됩니다. Bazel로 전달되고 '<cpu>|<compiler>'가 사용됩니다. 는 --cpu--compiler가 Bazel에 전달됩니다. 예:

          cc_toolchain_suite(
            name = "toolchain",
            toolchains = {
              "piii|gcc": ":my_cc_toolchain_for_piii_using_gcc",
              "piii": ":my_cc_toolchain_for_piii_using_default_compiler",
            },
          )