Objective-C 규칙

규칙

j2objc_library

j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

이 규칙은 J2ObjC를 사용하여 Java 소스를 변환합니다. 파일을 Objective-C로 전송한 다음 objc_library 및 objc_binary 의 종속 항목으로 사용 가능 있습니다. J2ObjC에 대한 자세한 내용은 J2ObjC 사이트

맞춤형 J2ObjC 변환 컴파일 플래그는 빌드 플래그를 사용하여 지정할 수 있습니다. --j2objc_translation_flags를 사용합니다.

j2objc_library 타겟에 포함된 번역된 파일은 기본 컴파일 구성을 사용하여 컴파일되는 경우 속성에 컴파일 옵션이 지정되지 않은 objc_library 규칙

또한 생성된 코드는 소스 수준이 아닌 타겟 수준에서 중복 삭제됩니다. 만약 동일한 Java 소스 파일이 포함된 다른 Java 타겟이 있는 경우 중복 기호 오류가 표시될 수 있습니다. . 이 문제를 해결하는 올바른 방법은 공유된 Java 소스 파일을 공통 타겟이 1개 있습니다.

인수

속성
name

Name; required

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

deps

List of labels; optional

j2objc_library, java_library, 다음을 포함하는 java_importjava_proto_library 타겟 Objective-C로 변환 컴파일할 Java 파일

도달할 수 있는 모든 java_libraryjava_import 타겟 exports, deps, runtime_deps을(를) 통과 변환 및 컴파일됩니다 현재 Java로 생성된 파일은 지원되지 않습니다. 주석 처리 또는 srcjar가 없는 java_import 대상 지정합니다.

J2ObjC 변환은 소스 Java 소스의 유형에 따라 다르게 작동합니다. 임시 폐쇄에 포함된 파일 .java에 포함된 각 .java 소스 파일에 대해 java_librarysrcs, 상응하는 .h 및 .m 소스 파일 생성됩니다. srcs에 포함된 각 소스 jar java_library 또는 srcjar/java_import, 그러면 해당 .h 및 .m 소스 파일이 해당 jar의 모든 코드와 함께 생성됩니다.

사용자는 자신의 코드에서 J2ObjC에서 생성된 헤더 파일을 가져올 수 있습니다. 다음의 가져오기 경로: 이러한 파일은 원본 Java 아티팩트의 루트 상대 경로입니다. 예를 들어 //some/package/foo.java의 가져오기 경로는 some/package/foo.h입니다. 및 //some/package/bar.srcjarsome/package/bar.h이(가) 있습니다.

proto_library 규칙이 이 규칙에 대한 임시 폐쇄에 포함된 경우 J2ObjC protos도 바이너리 수준에서 생성, 컴파일 및 링크됩니다. proto용 //some/proto/foo.proto: 사용자는 가져오기를 사용하여 생성된 코드를 참조할 수 있습니다. some/proto/foo.j2objc.pb.h 경로

entry_classes

List of strings; optional

번역된 ObjC 상응하는 객체가 직접 참조될 Java 클래스 목록 확인할 수 있습니다. --j2objc_dead_code_removal 플래그가 켜져 있는 경우 이 속성은 필수입니다. Java 클래스는 Java는 언어 사양. --j2objc_dead_code_removal 플래그를 지정하면 항목 클래스 목록이 전이적으로 수집되어 데드 코드 분석을 수행하기 위한 진입점으로 사용됩니다. 그러면 사용되지 않는 클래스가 최종 ObjC App Bundle에서 삭제됩니다.
jre_deps

List of labels; optional

j2objc_library 규칙 기본적으로 핵심 JRE 기능만 연결됩니다.

objc_import

objc_import(name, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)

이 규칙은 이미 컴파일된 정적 라이브러리를 .a 파일. 또한 동일한 명령어를 사용하여 헤더와 리소스를 objc_library에서 지원하는 속성입니다.

인수

속성
name

Name; required

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

hdrs

List of labels; optional

게시된 C, C++, Objective-C, Objective-C++ 헤더 파일 목록 종속 규칙의 소스에 의해 포함됩니다.

이러한 헤더는 라이브러리의 공개 인터페이스를 설명하며 이 규칙에 의해 또는 독립된 출처에 의해 포함될 수 있도록 제공 있습니다. 이 라이브러리의 클라이언트가 포함할 수 없는 헤더 대신 srcs 속성에 나열되어야 합니다.

모듈이 사용 설정된 경우 소스와 별도로 컴파일됩니다.

Boolean; optional; default is False

1인 경우 이 서비스에 (직접 또는 간접적으로) 종속된 모든 번들 또는 바이너리가 라이브러리는 목록에 있는 파일에 대한 모든 객체 파일에서 srcsnon_arc_srcs(일부에 바이너리에서 참조한 기호입니다. 이는 코드가 바이너리(예: 코드가 콜백을 수신하도록 등록되는 경우) 제공할 수 있습니다
archives

List of labels; required

Objective-C 타겟에 제공된 .a 파일 목록은 이 타겟에 종속됩니다.
includes

List of strings; optional

이 타겟에 추가할 검색 경로 #include/#import개 목록 대상에 따라 다릅니다 이는 SDK를 지원하지 않는 서드 파티 및 오픈소스 라이브러리를 지원하기 위한 것입니다. 전체 작업공간 경로를 #import/#include

경로는 패키지 디렉터리를 기준으로 해석됩니다. 생성형 파일 및 빈 루트 (예: blaze-genfiles/pkg/includedir) 및 blaze-out/pkg/includedir)가 클라이언트 루트로 이동합니다.

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

sdk_dylibs

List of strings; optional

연결할 SDK .dylib 라이브러리의 이름입니다. 예: 'libz' 또는 'libarchive'. "libc++" 바이너리에 C++ 또는 Objective-C++ 소스 바이너리를 링크할 때, 해당 바이너리의 전이 종속성 그래프에 명명된 모든 라이브러리는 있습니다.
sdk_frameworks

List of strings; optional

연결할 SDK 프레임워크의 이름입니다 (예: 'AddressBook', 'QuartzCore'). 'UIKit' 및 "기초" iOS, tvOS, visionOS, watchOS 플랫폼이 포함됩니다 macOS의 경우 'Foundation'만 항상 포함됩니다

최상위 Apple 바이너리를 연결하면 해당 바이너리의 전이 종속 항목 그래프가 연결됩니다.

sdk_includes

List of strings; optional

이 타겟에 추가할 검색 경로 #include/#import개 목록 모든 종속된 타겟이 있으며, 여기서 각 경로는 $(SDKROOT)/usr/include입니다.
textual_hdrs

List of labels; optional

Objective-C 및 Objective-C++ 파일에 포함된 C, C++, Objective-C 및 이 규칙에 있는 소스 파일 또는 이 규칙의 사용자가 헤더로 포함합니다. 있습니다. hdrs와 달리 소스입니다
weak_sdk_frameworks

List of strings; optional

약하게 연결할 SDK 프레임워크의 이름입니다. 예를 들면 다음과 같습니다. 'MediaAccessibility' 정기적으로 연결되는 SDK 프레임워크와의 차이점 오류가 발생하지 않는 없습니다.

objc_library

objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, runtime_deps, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)

이 규칙은 지정된 Objective-C 소스 파일에서 정적 라이브러리를 생성합니다.

인수

속성
name

Name; required

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

deps

List of labels; optional

최종 번들을 구성하기 위해 함께 연결된 대상의 목록입니다.
srcs

List of labels; optional

C, C++, Objective-C, Objective-C++ 소스 및 헤더 목록 파일 또는 (`.s`, `.S` 또는 `.asm`) 어셈블리 소스 파일 라이브러리 타겟에 있습니다. 체크인한 파일 및 생성된 파일이 여기에 해당합니다. 소스 파일은 Clang을 사용하여 .o 파일로 컴파일됩니다. 헤더 파일 srcs 속성의 모든 소스 또는 헤더에 의해 포함/가져올 수 있습니다. hdrs의 헤더나 종속된 타겟의 헤더는 포함되지 않음 이 규칙에 적용됩니다. 또한 사전 컴파일된 .o 파일을 src로 제공할 수 있습니다. 다음 사항에 주의하십시오. 제공된 .o 파일과 기호 링커 오류 누락을 방지합니다.
hdrs

List of labels; optional

게시된 C, C++, Objective-C, Objective-C++ 헤더 파일 목록 종속 규칙의 소스에 의해 포함됩니다.

이러한 헤더는 라이브러리의 공개 인터페이스를 설명하며 이 규칙에 의해 또는 독립된 출처에 의해 포함될 수 있도록 제공 있습니다. 이 라이브러리의 클라이언트가 포함할 수 없는 헤더 대신 srcs 속성에 나열되어야 합니다.

모듈이 사용 설정된 경우 소스와 별도로 컴파일됩니다.

Boolean; optional; default is False

1인 경우 이 서비스에 (직접 또는 간접적으로) 종속된 모든 번들 또는 바이너리가 라이브러리는 목록에 있는 파일에 대한 모든 객체 파일에서 srcsnon_arc_srcs(일부에 바이너리에서 참조한 기호입니다. 이는 코드가 바이너리(예: 코드가 콜백을 수신하도록 등록되는 경우) 제공할 수 있습니다
copts

List of strings; optional

컴파일러에 전달할 추가 플래그입니다. 'Make 변수' 대체 적용 Bourne 셸 토큰화. 이러한 플래그는 이 타겟에만 적용되며 타겟에는 적용되지 않습니다. 그것에 종속된 것들에 종속된 것을 볼 수 있습니다.

생성된 Xcode 프로젝트의 경우 디렉터리 경로는 '-I'를 사용하여 지정됩니다. 깃발 copts는 파싱되어 앞에 '$(WORKSPACE_ROOT)/'가 추가됩니다. 상대 경로인 경우 관련 Xcode 타겟의 헤더 검색 경로에 추가됩니다.

defines

List of strings; optional

컴파일러에 전달할 추가 -D 플래그 해당 위치는 다음과 같아야 합니다. KEY=VALUE 또는 간단히 KEY 형식이며 이 타겟의 컴파일러로도 전달되지 않습니다 (copts로). are)뿐만 아니라 이 타겟의 모든 objc_ 종속 항목에도 적용됩니다. 'Make 변수' 대체 적용 Bourne 셸 토큰화.
enable_modules

Boolean; optional; default is False

-fmodules를 통해 clang 모듈 지원을 사용 설정합니다. 1로 설정하면 시스템 헤더 및 기타 대상을 @import할 수 있습니다. @import UIKit; @import path_to_package_target;
implementation_deps

List of labels; optional

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

List of strings; optional

이 타겟에 추가할 검색 경로 #include/#import개 목록 대상에 따라 다릅니다 이는 SDK를 지원하지 않는 서드 파티 및 오픈소스 라이브러리를 지원하기 위한 것입니다. 전체 작업공간 경로를 #import/#include

경로는 패키지 디렉터리를 기준으로 해석됩니다. 생성형 파일 및 빈 루트 (예: blaze-genfiles/pkg/includedir) 및 blaze-out/pkg/includedir)가 클라이언트 루트로 이동합니다.

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

linkopts

List of strings; optional

링커에 전달할 추가 플래그입니다.
module_map

Label; optional

이 타겟의 커스텀 Clang 모듈 맵입니다. 맞춤 모듈 맵은 사용하지 않는 것이 좋습니다. 대부분 Bazel에서 생성한 모듈 맵을 사용해야 합니다. 지정된 경우 Bazel은 이 대상에 대한 모듈 맵을 생성하지 않지만 모듈 맵을 컴파일러에 제공합니다.
module_name

String; optional

이 타겟의 모듈 이름을 설정합니다. 기본적으로 모듈 이름은 모든 특수 기호는 _로 대체됩니다. 예: //foo/baz:bar는 foo_baz_bar로 가져올 수 있습니다.
non_arc_srcs

List of labels; optional

라이브러리를 타겟팅해야 합니다. 이 속성의 파일은 srcs 속성을 지원하지만 ARC를 사용하지 않고 컴파일됩니다.
pch

Label; optional

컴파일 중인 모든 소스 파일 앞에 추가할 헤더 파일 (양쪽 아크 파일) Arc에서 사용할 수 있습니다. BUILD 파일에서는 pch 파일을 사용하지 않는 것이 좋습니다. 지원 중단된 것으로 간주됩니다. pch 파일은 실제로 사전 컴파일되지 않았으므로 빌드 속도가 향상되었으며 대신 전역 종속 항목입니다. 빌드에서 생성됨 효율성 측면에서는 직접 필요한 것을 포함하는 것이 실제로 더 낫습니다. 필요한 곳에 추가하세요
runtime_deps

List of labels; optional

런타임에 늦게 로드되는 프레임워크 타겟의 목록입니다. 이러한 주제는 App Bundle에 연결되지만 빌드 시간에 연결되지는 않습니다.
sdk_dylibs

List of strings; optional

연결할 SDK .dylib 라이브러리의 이름입니다. 예: 'libz' 또는 'libarchive'. "libc++" 바이너리에 C++ 또는 Objective-C++ 소스 바이너리를 링크할 때, 해당 바이너리의 전이 종속성 그래프에 명명된 모든 라이브러리는 있습니다.
sdk_frameworks

List of strings; optional

연결할 SDK 프레임워크의 이름입니다 (예: 'AddressBook', 'QuartzCore'). 'UIKit' 및 "기초" iOS, tvOS, visionOS, watchOS 플랫폼이 포함됩니다 macOS의 경우 'Foundation'만 항상 포함됩니다

최상위 Apple 바이너리를 연결하면 해당 바이너리의 전이 종속 항목 그래프가 연결됩니다.

sdk_includes

List of strings; optional

이 타겟에 추가할 검색 경로 #include/#import개 목록 모든 종속된 타겟이 있으며, 여기서 각 경로는 $(SDKROOT)/usr/include입니다.
textual_hdrs

List of labels; optional

Objective-C 및 Objective-C++ 파일에 포함된 C, C++, Objective-C 및 이 규칙에 있는 소스 파일 또는 이 규칙의 사용자가 헤더로 포함합니다. 있습니다. hdrs와 달리 소스입니다
weak_sdk_frameworks

List of strings; optional

약하게 연결할 SDK 프레임워크의 이름입니다. 예를 들면 다음과 같습니다. 'MediaAccessibility' 정기적으로 연결되는 SDK 프레임워크와의 차이점 오류가 발생하지 않는 없습니다.

available_xcodes

available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)

이 규칙의 두 대상은 xcode_config 규칙 인스턴스가 의존하여 원격 및 로컬에서 사용할 수 있는 xcode 버전을 나타냅니다. 이렇게 하면 전체적으로 사용 가능한 xcode에서 공식 xcode 버전을 선택할 수 있습니다.

인수

속성
name

Name; required

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

default

Label; required; nonconfigurable

이 플랫폼의 기본 xcode 버전입니다.
versions

List of labels; optional; nonconfigurable

이 플랫폼에서 사용할 수 있는 xcode 버전입니다.

xcode_config

xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)

이 규칙의 단일 대상은 --xcode_version_config 빌드에서 참조할 수 있습니다. 플래그: --xcode_version 플래그를 허용된 공식 xcode 버전으로 변환합니다. 이를 통해 등록된 여러 별칭 중에서 공식 xcode 버전을 선택할 수 있습니다.

인수

속성
name

Name; required

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

default

Label; optional; nonconfigurable

사용할 xcode의 기본 공식 버전입니다. 제공된 xcode_version 타겟으로 지정된 버전은 다음과 같은 경우에 사용됩니다. xcode_version 빌드 플래그가 지정되지 않았습니다. 다음이 있는 경우 필수입니다. versions가 설정되었습니다. remote_versions 또는 local_versions가 설정되었습니다.
local_versions

Label; optional; nonconfigurable

xcode_version targets that are available locally. These are used along with local_versions to select a mutually available version. This may not be set if versions is set.
remote_versions

Label; optional; nonconfigurable

xcode_version targets that are available remotely. These are used along with remote_versions to select a mutually available version. This may not be set if versions is set.
versions

List of labels; optional; nonconfigurable

xcode_version targets that may be used. If the value of the xcode_version build flag matches one of the aliases or version number of any of the given xcode_version targets, the matching target will be used. This may not be set if remote_versions or local_versions is set. 개 승인됨

xcode_version

xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)

해당 xcode 버전에 대해 허용되는 별칭이 있는 단일 공식 xcode 버전을 나타냅니다. xcode_config 규칙을 참고하세요.

인수

속성
name

Name; required

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

default_ios_sdk_version

String; optional; nonconfigurable

이 버전의 xcode를 사용할 때 기본적으로 사용되는 iOS SDK 버전입니다. ios_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
default_macos_sdk_version

String; optional; nonconfigurable

이 버전의 xcode를 사용할 때 기본적으로 사용되는 macOS SDK 버전입니다. macos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
default_tvos_sdk_version

String; optional; nonconfigurable

이 버전의 xcode를 사용할 때 기본적으로 사용되는 tvos SDK 버전입니다. tvos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
default_visionos_sdk_version

String; optional; nonconfigurable

이 버전의 xcode를 사용할 때 기본적으로 사용되는 Visionos SDK 버전입니다. visionos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
default_watchos_sdk_version

String; optional; nonconfigurable

이 버전의 xcode를 사용할 때 기본적으로 사용되는 watchos SDK 버전입니다. watchos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
version

String; required; nonconfigurable

Xcode 버전의 공식 버전 번호입니다.