native.cc_library
). 네이티브 모듈은 로드 단계에서만 사용할 수 있습니다 (즉, 규칙 구현이 아닌 매크로에서). 속성은 None
값을 무시하고 속성이 설정되지 않은 것처럼 취급합니다.다음 함수도 사용할 수 있습니다.
구성원
existing_rule
unknown native.existing_rule(name)이 스레드의 패키지에 인스턴스화된 규칙의 속성을 설명하는 변경 불가능한 사전형 객체를 반환하거나 해당 이름의 규칙 인스턴스가 없는 경우
None
을 반환합니다.여기서 변경 불가능한 사전형 객체는 사전과 같은 반복 len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, x.values()
를 지원하는 완전히 변경 불가능한 객체 x
를 의미합니다.
--noincompatible_existing_rules_immutable_view
플래그를 설정하면 대신 동일한 콘텐츠가 포함된 변경 가능한 새 dict가 반환됩니다.
결과에는 각 속성의 항목이 포함됩니다. 단, 비공개 속성 (이름이 문자로 시작하지 않는 이름)과 표시할 수 없는 몇 가지 기존 속성 유형은 예외입니다. 또한 사전에는 규칙 인스턴스의 name
및 kind
에 대한 항목 (예: 'cc_binary'
)도 포함되어 있습니다.
결과 값은 다음과 같이 속성 값을 나타냅니다.
- str, int, bool 유형의 속성은 있는 그대로 표현됩니다.
- 라벨은 동일한 패키지의 타겟인 경우
':foo'
형식의 문자열로, 다른 패키지에 있는 타겟의 경우'//pkg:name'
형식의 문자열로 변환됩니다. - 목록은 튜플로 표현되며 사전은 변경 가능한 새로운 사전으로 변환됩니다. 해당 요소는 동일한 방식으로 재귀적으로 변환됩니다.
select
값은 위에서 설명한 대로 콘텐츠가 변환된 상태로 반환됩니다.- 규칙을 인스턴스화하는 동안 값을 지정하지 않았고 기본값이 계산된 속성은 결과에서 제외됩니다. 계산된 기본값은 분석 단계까지 계산할 수 없습니다.
가능하면 이 함수를 사용하지 마세요. 이로 인해 BUILD 파일이 불안정하고 순서에 종속됩니다. 또한 규칙 속성 값을 내부 형식에서 Starlark로 변환하는 다른 두 가지 변환과는 미묘하게 다릅니다. 하나는 계산된 기본값에 사용되고 다른 하나는 ctx.attr.foo
에서 사용됩니다.
매개변수
매개변수 | 설명 |
---|---|
name
|
필수 대상의 이름입니다. |
existing_rules
unknown native.existing_rules()이 스레드의 패키지에 지금까지 인스턴스화된 규칙을 설명하는 변경 불가능한 사전형 객체를 반환합니다. 사전과 유사한 객체의 각 항목은 규칙 인스턴스의 이름을
existing_rule(name)
에서 반환하는 결과에 매핑합니다.여기서 변경 불가능한 사전형 객체는 사전과 같은 반복 len(x)
, name in x
, x[name]
, x.get(name)
, x.items()
, x.keys()
, x.values()
를 지원하는 완전히 변경 불가능한 객체 x
를 의미합니다.
--noincompatible_existing_rules_immutable_view
플래그를 설정하면 대신 동일한 콘텐츠가 포함된 변경 가능한 새 dict가 반환됩니다.
참고: 가능하면 이 함수를 사용하지 마세요. 이로 인해 BUILD 파일이 불안정하고 순서에 종속됩니다. 또한 --noincompatible_existing_rules_immutable_view
플래그를 설정하면 이 함수는 특히 루프 내에서 호출되는 경우 비용이 많이 들 수 있습니다.
exports_files
None native.exports_files(srcs, visibility=None, licenses=None)이 패키지에 속한 파일 중 다른 패키지로 내보내는 파일의 목록을 지정합니다.
매개변수
매개변수 | 설명 |
---|---|
srcs
|
sequence of strings , 필수내보낼 파일의 목록입니다. |
visibility
|
sequence; or None ;
default = None가시성 선언을 지정할 수 있습니다. 파일이 지정된 대상에 표시됩니다. 공개 상태를 지정하지 않으면 파일이 모든 패키지에 표시됩니다. |
licenses
|
sequence of strings; or None ;
default = None지정할 라이선스입니다. |
glob
sequence native.glob(include=[], exclude=[], exclude_directories=1, allow_empty=unbound)Glob은 다음과 같은 현재 패키지에 있는 모든 파일의 변경 가능하고 정렬된 새 목록을 반환합니다.
include
에 있는 하나 이상의 패턴과 일치합니다.exclude
(기본값[]
)의 패턴과 일치하지 않습니다.
exclude_directories
인수가 사용 설정 (1
로 설정)되면 디렉터리 유형의 파일이 결과에서 생략됩니다 (기본값 1
).
매개변수
매개변수 | 설명 |
---|---|
include
|
sequence of strings ;
default = []포함할 glob 패턴의 목록입니다. |
exclude
|
sequence of strings ;
default = []제외할 glob 패턴의 목록입니다. |
exclude_directories
|
default = 1 디렉터리 제외 여부를 나타내는 플래그입니다. |
allow_empty
|
default = unbound glob 패턴이 아무것도 일치하도록 허용할지 여부입니다. `allow_empty` 가 false인 경우 각 개별 포함 패턴은 특정 항목과 일치해야 하며 최종 결과도 비어 있으면 안 됩니다 (`embed` 패턴의 일치 항목이 제외된 후). |
package_group
None native.package_group(name, packages=[], includes=[])이 함수는 패키지 집합을 정의하고 그룹에 라벨을 할당합니다. 라벨은
visibility
속성에서 참조할 수 있습니다.
매개변수
매개변수 | 설명 |
---|---|
name
|
필수 이 규칙의 고유한 이름입니다. |
packages
|
sequence of strings ;
default = []이 그룹의 패키지의 전체 열거입니다. |
includes
|
sequence of strings ;
default = []여기에 포함된 다른 패키지 그룹입니다. |
package_name
string native.package_name()평가되는 패키지의 이름입니다. 예를 들어 BUILD 파일
some/package/BUILD
에서 값은 some/package
입니다. BUILD 파일이 .bzl 파일에 정의된 함수를 호출하면 package_name()
는 호출자 BUILD 파일 패키지와 일치합니다. 이 함수는 지원 중단된 변수 PACKAGE_NAME
와 동일합니다.
repository_name
string native.repository_name()규칙 또는 빌드 확장 프로그램이 호출되는 저장소의 이름입니다. 예를 들어 WORKSPACE 스탠자
local_repository(name='local', path=...)
에 의해 호출되는 패키지에서는 @local
로 설정됩니다. 기본 저장소의 패키지에서는 @
로 설정됩니다. 이 함수는 지원 중단된 변수 REPOSITORY_NAME
와 동일합니다.
하위 패키지
sequence native.subpackages(include, exclude=[], allow_empty=False)파일 시스템 디렉터리 깊이와 관계없이 현재 패키지의 모든 직접 하위 패키지의 변경 가능한 새 목록을 반환합니다. 반환된 목록이 정렬되고 현재 패키지를 기준으로 하위 패키지의 이름이 포함됩니다. 이 함수를 직접 호출하는 것보다 bazel_skylib.subpackages 모듈의 메서드를 사용하는 것이 좋습니다.
매개변수
매개변수 | 설명 |
---|---|
include
|
sequence of strings , 필수하위 패키지 스캔에 포함할 glob 패턴 목록입니다. |
exclude
|
sequence of strings ;
default = []하위 패키지 스캔에서 제외할 glob 패턴 목록입니다. |
allow_empty
|
default = False 호출이 빈 목록을 반환하는 경우의 실패 여부입니다. 기본적으로 빈 목록은 subpackages() 호출이 수퍼플로인 BUILD 파일에서 잠재적인 오류를 나타냅니다. true로 설정하면 이러한 경우에 이 함수가 성공할 수 있습니다. |