규칙
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를 사용하여 자바 소스 파일을 Objective-C로 변환한 다음 objc_library 및 objc_binary 규칙의 종속 항목으로 사용할 수 있습니다. J2ObjC 자체에 대한 자세한 내용은 J2ObjC 사이트에서 확인할 수 있습니다.
맞춤 J2ObjC 변환 컴파일 플래그는 명령줄에서 빌드 플래그 --j2objc_translation_flags
를 사용하여 지정할 수 있습니다.
j2objc_library 타겟에 포함된 번역된 파일은 속성에 지정된 컴파일 옵션이 없는 objc_library 규칙의 소스와 동일한 구성인 기본 컴파일 구성을 사용하여 컴파일됩니다.
또한 생성된 코드는 소스 수준이 아닌 타겟 수준에서 중복 제거됩니다. 동일한 Java 소스 파일을 포함하는 두 개의 서로 다른 Java 타겟이 있는 경우 링크 시간에 중복 기호 오류가 표시될 수 있습니다. 이 문제를 해결하는 올바른 방법은 공유된 자바 소스 파일을 신뢰할 수 있는 별도의 공통 타겟으로 이동하는 것입니다.
인수
특성 | |
---|---|
name |
이 대상의 고유한 이름입니다. |
deps
|
j2objc_library , java_library ,
java_import , java_proto_library 타겟의 목록입니다.
J2ObjC 변환은 전이 클로저에 포함된 소스 자바 소스 파일의 유형에 따라 다르게 작동합니다. 사용자는 J2ObjC에서 생성된 헤더 파일을 코드에서 가져올 수 있습니다. 이러한 파일의 가져오기 경로는 원본 자바 아티팩트의 루트 상대 경로입니다. 예를 들어
proto_library 규칙이 이 규칙의 전이적 클로저에 있는 경우 J2ObjC proto도 바이너리 수준에서 생성, 컴파일 및 링크됩니다. proto |
entry_classes
|
--j2objc_dead_code_removal
플래그가 사용 설정된 경우 이 속성이 필요합니다. 자바 클래스는 자바 언어 사양에 정의된 표준 이름으로 지정해야 합니다.
--j2objc_dead_code_removal 플래그가 지정되면 항목 클래스 목록이 전이적으로 수집되고 데드 코드 분석을 수행하기 위한 진입점으로 사용됩니다.
그러면 사용되지 않는 클래스가 최종 ObjC App Bundle에서 삭제됩니다.
|
jre_deps
|
j2objc_library 규칙으로 변환되는 모든 자바 코드에 필요한 추가 JRE 에뮬레이션 라이브러리 목록입니다. 핵심 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 |
이 대상의 고유한 이름입니다. |
hdrs
|
이러한 헤더는 라이브러리의 공개 인터페이스를 설명하며 이 규칙 또는 종속 규칙의 소스에 의해 포함될 수 있습니다. 이 라이브러리의 클라이언트에 의해 포함되지 않아야 하는 헤더는 대신 srcs 속성에 나열되어야 합니다. 모듈이 사용 설정된 경우 소스와 별도로 컴파일됩니다. |
alwayslink
|
srcs 및 non_arc_srcs 에 나열된 파일의 모든 객체 파일에서 링크됩니다. 이는 바이너리에서 참조하는 기호가 일부에 포함되어 있지 않더라도 마찬가지입니다.
이는 코드가 바이너리의 코드에 의해 명시적으로 호출되지 않는 경우(예: 코드가 일부 서비스에서 제공하는 콜백을 수신하도록 등록되는 경우) 유용합니다.
|
archives
|
.a 파일의 목록입니다.
|
includes
|
#include/#import 검색 경로 목록입니다.
#import/#include 문에서 전체 작업공간 경로를 지정하지 않는 서드 파티 및 오픈소스 라이브러리를 지원하기 위한 것입니다.
경로는 패키지 디렉터리를 기준으로 해석되며, 실제 클라이언트 루트 외에 genfile과 bin 루트 (예: COPTS와 달리, 이러한 플래그는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다. (참고: 적용되는 규칙이 아님) 광범위한 영향을 미칠 수 있으므로 매우 주의해야 합니다. 확실하지 않은 경우 대신 COPTS에 '-iquote' 플래그를 추가하세요. |
sdk_dylibs
|
|
sdk_frameworks
|
최상위 Apple 바이너리를 연결하면 해당 바이너리의 전이 종속 항목 그래프에 나열된 모든 SDK 프레임워크가 연결됩니다. |
sdk_includes
|
#include/#import 검색 경로 목록으로, 각 경로는 $(SDKROOT)/usr/include 을 기준으로 합니다.
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
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 |
이 대상의 고유한 이름입니다. |
deps
|
|
srcs
|
|
hdrs
|
이러한 헤더는 라이브러리의 공개 인터페이스를 설명하며 이 규칙 또는 종속 규칙의 소스에 의해 포함될 수 있습니다. 이 라이브러리의 클라이언트에 의해 포함되지 않아야 하는 헤더는 대신 srcs 속성에 나열되어야 합니다. 모듈이 사용 설정된 경우 소스와 별도로 컴파일됩니다. |
alwayslink
|
srcs 및 non_arc_srcs 에 나열된 파일의 모든 객체 파일에서 링크됩니다. 이는 바이너리에서 참조하는 기호가 일부에 포함되어 있지 않더라도 마찬가지입니다.
이는 코드가 바이너리의 코드에 의해 명시적으로 호출되지 않는 경우(예: 코드가 일부 서비스에서 제공하는 콜백을 수신하도록 등록되는 경우) 유용합니다.
|
copts
|
생성된 Xcode 프로젝트의 경우 copts에서 '-I' 플래그를 사용하여 지정된 디렉터리 경로는 파싱되고 상대 경로인 경우 앞에 '$(WORKSPACE_ROOT)/'가 추가된 후 연결된 Xcode 타겟의 헤더 검색 경로에 추가됩니다. |
defines
|
-D 플래그입니다. KEY=VALUE 또는 단순히 KEY 형식이어야 하며 이 타겟의 컴파일러 (copts 와 같이)뿐만 아니라 이 타겟의 모든 objc_ 종속 항목에도 전달됩니다.
"Makevariable" 대체 및 Bourne 셸 토큰화를 따릅니다.
|
enable_modules
|
|
implementation_deps
|
deps 와 달리, 이러한 라이브러리의 헤더와 포함 경로 (및 모든 전이적 deps)는 이 라이브러리의 컴파일에만 사용되며 이 라이브러리에 종속된 라이브러리는 사용되지 않습니다. implementation_deps 로 지정된 라이브러리는 여전히 이 라이브러리에 종속된 바이너리 타겟에 링크됩니다.
|
includes
|
#include/#import 검색 경로 목록입니다.
#import/#include 문에서 전체 작업공간 경로를 지정하지 않는 서드 파티 및 오픈소스 라이브러리를 지원하기 위한 것입니다.
경로는 패키지 디렉터리를 기준으로 해석되며, 실제 클라이언트 루트 외에 genfile과 bin 루트 (예: COPTS와 달리, 이러한 플래그는 이 규칙과 이 규칙에 종속된 모든 규칙에 추가됩니다. (참고: 적용되는 규칙이 아님) 광범위한 영향을 미칠 수 있으므로 매우 주의해야 합니다. 확실하지 않은 경우 대신 COPTS에 '-iquote' 플래그를 추가하세요. |
linkopts
|
|
module_map
|
|
module_name
|
|
non_arc_srcs
|
|
pch
|
|
runtime_deps
|
|
sdk_dylibs
|
|
sdk_frameworks
|
최상위 Apple 바이너리를 연결하면 해당 바이너리의 전이 종속 항목 그래프에 나열된 모든 SDK 프레임워크가 연결됩니다. |
sdk_includes
|
#include/#import 검색 경로 목록으로, 각 경로는 $(SDKROOT)/usr/include 을 기준으로 합니다.
|
textual_hdrs
|
|
weak_sdk_frameworks
|
|
available_xcodes
available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
이 규칙의 두 대상은 xcode_config
규칙 인스턴스에 따라 원격으로 로컬에서 사용 가능한 xcode 버전을 나타낼 수 있습니다.
이렇게 하면 집합적으로 사용 가능한 xcode에서 공식 xcode 버전을 선택할 수 있습니다.
인수
특성 | |
---|---|
name |
이 대상의 고유한 이름입니다. |
default
|
|
versions
|
|
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 |
이 대상의 고유한 이름입니다. |
default
|
xcode_version 빌드 플래그를 지정하지 않으면 제공된 xcode_version 타겟에서 지정된 버전이 사용됩니다. versions 가 설정된 경우 필수입니다. remote_versions 또는 local_versions 가 설정된 경우에는 설정되지 않을 수도 있습니다.
|
local_versions
|
xcode_version |
remote_versions
|
xcode_version |
versions
|
xcode_version 개 승인됨 |
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 |
이 대상의 고유한 이름입니다. |
default_ios_sdk_version
|
ios_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
|
default_macos_sdk_version
|
macos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
|
default_tvos_sdk_version
|
tvos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
|
default_visionos_sdk_version
|
visionos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
|
default_watchos_sdk_version
|
watchos_sdk_version 빌드 플래그는 여기에 지정된 값을 재정의합니다.
|
version
|
|