코틀린 컴파일러 옵션
코틀린 컴파일러 옵션 (Kotlin compiler options)
코틀린의 각 릴리스는 지원 대상(JVM, JavaScript, 지원 플랫폼용 네이티브 바이너리)을 위한 컴파일러를 포함해요.
이 컴파일러들은 다음과 같은 곳에서 사용돼요.
- IDE에서 코틀린 프로젝트의 Compile 또는 Run 버튼을 클릭할 때.
- 콘솔이나 IDE에서
gradle build를 호출할 때(Gradle). - 콘솔이나 IDE에서
mvn compile이나mvn test-compile을 호출할 때(Maven).
명령줄 컴파일러를 수동으로 실행할 수도 있어요. 자세한 내용은 "커맨드라인 컴파일러 사용하기(Working with command-line compiler)" 튜토리얼을 참고하세요.
컴파일러 옵션
코틀린 컴파일러에는 컴파일 과정을 맞춤 구성하기 위한 많은 옵션(컴파일러 인자)이 있어요. 대상별 컴파일러 옵션은 이 페이지에 각각의 설명과 함께 정리돼 있어요.
컴파일러 옵션과 그 값(컴파일러 인자)을 설정하는 방법은 여러 가지예요.
- IntelliJ IDEA에서는 Settings/Preferences | Build, Execution, Deployment | Compiler | Kotlin Compiler의 Additional command line parameters 텍스트 박스에 컴파일러 인자를 적어요.
- Gradle을 쓴다면 코틀린 컴파일 태스크의
compilerOptions속성에 컴파일러 인자를 지정해요. 자세한 내용은 Gradle 컴파일러 옵션을 참고하세요. - Maven을 쓴다면 Maven 플러그인 노드의
<configuration>요소에 컴파일러 인자를 지정해요. 자세한 내용은 Maven을 참고하세요. - 명령줄 컴파일러를 실행한다면 유틸리티 호출에 컴파일러 인자를 직접 추가하거나 argfile에 적어요.
예를 들어:
$ kotlinc hello.kt -include-runtime -d hello.jar
Windows에서는 구분 문자(공백, =, ;, ,)가 포함된 컴파일러 인자를 전달할 때 그 인자를 큰따옴표(")로 감싸세요.
$ kotlinc.bat hello.kt -include-runtime -d "My Folder\hello.jar"
컴파일러 옵션 스키마
모든 컴파일러 옵션의 공통 스키마는 org.jetbrains.kotlin:kotlin-compiler-arguments-description이라는 JAR 아티팩트로 게시돼요. 이 아티팩트는 모든 컴파일러 옵션 설명의 코드 표현과 (비-코틀린 소비자용) JSON 상당 표현을 모두 포함해요. 각 옵션이 도입되거나 안정화된 버전 같은 메타데이터도 포함하고요.
공통 옵션 (Common options)
다음 옵션들은 모든 코틀린 컴파일러에 공통이에요.
-api-version version
런타임에 코드가 사용할 수 있는 코틀린 API를 제어하도록 API 버전을 설정해요. 예를 들어 -api-version=2.1과 함께 코틀린 컴파일러 2.4.0을 사용하면, 코드가 코틀린 표준 라이브러리 2.1.0과 호환되게 유지돼요.
-api-version 값을 -language-version 값보다 높게 설정할 수는 없어요.
대부분의 경우 API 버전과 언어 버전은 같아야 해요. 한 가지 예외는 더 오래된 코틀린 표준 라이브러리 버전으로 실행해야 하는 소비자를 위해 라이브러리를 개발할 때예요. 그 경우 더 오래된 API 버전을 설정해서, 그 소비자들이 사용할 수 없는 API를 실수로 사용하는 것을 피할 수 있어요.
API 버전이 호환성에 어떤 영향을 주는지 더 알고 싶다면 라이브러리 저자를 위한 하위 호환성 지침(Backward compatibility guidelines)을 참고하세요.
-help (-h)
사용 정보를 표시하고 종료해요. 표준 옵션만 보여요. 고급 옵션을 보려면 -X를 사용하세요.
-kotlin-home path
런타임 라이브러리 탐색에 사용할 코틀린 컴파일러의 경로를 사용자 지정으로 지정해요.
-language-version version
컴파일 중에 사용할 수 있는 코틀린 언어 기능을 제어하도록 언어 버전을 설정해요.
예를 들어 컴파일러 동작을 바꾸지 않고 새 컴파일 성능 개선만 활용하고 싶다면, 새 컴파일러 버전과 더 오래된 언어 버전을 함께 쓸 수 있어요. 더 오래된 언어 버전에서는 최신 언어 기능을 쓸 수 없지만, 그 버전 이후에 도입된 새 오류와 폐기 사항도 보지 못해요. 이 접근 방식은 오래된 코틀린 버전과의 호환성을 유지해야 하는 라이브러리 저자에게 특히 유용해요. 자세한 내용은 라이브러리 저자를 위한 하위 호환성 지침을 참고하세요.
코틀린의 최신 안정 버전 세 개 중 하나를 언어 버전으로 설정할 수 있어요. 예를 들어 코틀린 2.5.0은 언어 버전 2.2까지 지원해요.
더 오래된 언어 버전을 쓰면 더 오래된 API 버전도 사용해야 해요. 자세한 내용은 -api-version version 항목을 참고하세요.
기술적으로 더 새로운 언어 버전을 설정해서 아직 안정화되지 않은 곧 출시될 언어 기능을 시험해 볼 수도 있어요. 다만 개별 기능을 각자의 전용 지침에 따라 활성화하는 편이 가장 좋아요.
-opt-in annotation
지정된 완전 수식 이름(fully qualified name)을 가진 요구 애너테이션으로 opt-in이 필요한 API 사용을 활성화해요.
-P plugin:pluginId:optionName=value
옵션을 코틀린 컴파일러 플러그인에 전달해요. 핵심 플러그인과 그 옵션은 문서의 Core compiler plugins 섹션에 정리돼 있어요.
-progressive
컴파일러의 progressive 모드를 활성화해요.
progressive 모드에서는 불안정한 코드에 대한 폐기와 버그 수정이 완만한 마이그레이션 주기를 거치지 않고 즉시 적용돼요. progressive 모드로 작성된 코드는 하위 호환되지만, non-progressive 모드로 작성된 코드는 progressive 모드에서 컴파일 오류를 일으킬 수 있어요.
-script
코틀린 스크립트 파일을 평가해요. 이 옵션과 함께 호출하면 컴파일러는 주어진 인자 중 첫 번째 코틀린 스크립트(*.kts) 파일을 실행해요.
-verbose
컴파일 과정의 세부 내용을 포함한 상세 로깅 출력을 활성화해요.
-version
컴파일러 버전을 표시해요.
-X
고급 옵션에 대한 정보를 표시하고 종료해요. 이 옵션들은 현재 불안정해서, 이름과 동작이 공지 없이 변경될 수 있어요.
코틀린 계약(contract) 옵션
다음 옵션들은 실험적인 코틀린 계약 기능을 활성화해요.
-Xallow-contracts-on-more-functions
속성 접근자, 특정 연산자 함수, 제네릭 타입의 타입 단언을 포함한 추가 선언에서 계약을 활성화해요.
-Xallow-condition-implies-returns-contracts
계약에서 returnsNotNull() 함수를 사용해 지정된 조건에 대해 non-null 반환 값을 가정할 수 있게 해요.
-Xallow-holdsin-contract
계약에서 holdsIn 키워드를 사용해 람다 내부에서 부울 조건이 true라고 가정할 수 있게 해요.
-Xallow-returns-result-of
returnsResultOf() 계약을 사용할 수 있게 해서, 사용되지 않는 반환 값 검사기가 무시해도 되는 결과와 고차 함수의 의미 있는 결과를 구분할 수 있게 해요.
-Xallow-reified-type-in-catch
inline 함수의 catch 절에서 reified Throwable 타입 매개변수 지원을 활성화해요.
-Xcollection-literals
대괄호 문법 []을 사용한 컬렉션 리터럴 지원을 활성화해요.
-Xcompiler-plugin-order={plugin.before>plugin.after}
컴파일러 플러그인의 실행 순서를 설정해요. 컴파일러는 plugin.before를 먼저 실행하고 그다음 plugin.after를 실행해요.
세 개 이상의 플러그인에 대해 여러 정렬 규칙을 정의할 수 있어요. 예를 들어:
kotlinc -Xcompiler-plugin-order=plugin.first>plugin.middle
kotlinc -Xcompiler-plugin-order=plugin.middle>plugin.last
그 결과 실행 순서는 다음과 같아요.
plugin.firstplugin.middleplugin.last
컴파일러 플러그인이 없으면 해당 규칙은 무시돼요.
다음 플러그인들을 ID로 설정할 수 있어요.
| 컴파일러 플러그인 | 플러그인 ID |
|---|---|
| all-open, kotlin-spring | org.jetbrains.kotlin.allopen |
| AtomicFU | org.jetbrains.kotlinx.atomicfu |
| Compose | androidx.compose.compiler.plugins.kotlin |
| js-plain-objects | org.jetbrains.kotlinx.jspo |
| jvm-abi-gen | org.jetbrains.kotlin.jvm.abi |
| kapt | org.jetbrains.kotlin.kapt3 |
| Lombok | org.jetbrains.kotlin.lombok |
| no-arg, kotlin-jpa | org.jetbrains.kotlin.noarg |
| Parcelize | org.jetbrains.kotlin.parcelize |
| Power-assert | org.jetbrains.kotlin.powerassert |
| SAM with receiver | org.jetbrains.kotlin.samWithReceiver |
| Serialization | org.jetbrains.kotlinx.serialization |
이 실행 순서는 컴파일러 플러그인의 백엔드만 제어하지 프론트엔드는 제어하지 않아요.
-Xdata-flow-based-exhaustiveness
when 표현식에 대한 데이터 흐름 기반(data-flow–based) 완전성 검사를 활성화해요.
-Xexplicit-context-arguments
컨텍스트 매개변수에 대한 명시적 컨텍스트 인자를 활성화해요.
이렇게 하면 호출 지점에서 컨텍스트 인자를 전달해 오버로드 모호성을 해결할 수 있어요.
-Xklib-ir-inliner
Kotlin/Native, Kotlin/JS, Kotlin/Wasm에 대해 모듈 내 인라이닝(intra-module inlining)을 활성화할지 설정해요. 기본값은 활성화예요.
이 옵션은 다음 모드를 지원해요.
disabled: Kotlin/Native, Kotlin/JS, Kotlin/Wasm에 대해 모듈 내 인라이닝을 비활성화.full: 모듈 간 인라이닝(cross-module inlining)을 활성화.
-Xintrinsic-const-evaluation
개선된 컴파일-시간 상수를 활성화해요.
-Xname-based-destructuring
컴파일러가 속성 이름을 기반으로 구조 분해 선언(destructuring declarations)을 어떻게 해석할지 설정해요.
이 옵션은 다음 모드를 지원해요.
only-syntax: 기존 구조 분해 선언의 동작을 바꾸지 않고 name-based destructuring의 명시적 형식을 활성화.name-mismatch: 데이터 클래스에서 위치 기반 구조 분해가 속성 이름과 일치하지 않는 변수 이름을 사용할 때 경고를 보고.complete: 괄호를 사용한 축약형 name-based destructuring을 활성화하고, 대괄호 문법의 위치 기반 구조 분해는 계속 지원.
-Xphases-to-dump-before
IR lowering 컴파일 단계 다음에 덤프 파일을 만들도록 ExternalPackageParentPatcherLowering으로 설정해요. Kotlin/JVM의 출력 디렉터리는 -Xdump-directory 컴파일러 옵션으로 설정해요.
-Xrepl
코틀린 REPL을 활성화해요.
kotlinc -Xrepl
-Xreturn-value-checker
컴파일러가 무시된 결과를 어떻게 보고할지 설정해요.
disable: 사용되지 않는 반환 값 검사기를 비활성화(기본값).check: 검사기를 활성화하고, 표시된 함수에서 무시된 결과에 대해 경고를 보고.full: 검사기를 활성화하고 프로젝트의 모든 함수를 표시된 것으로 취급해 무시된 결과에 대해 경고를 보고.
경고 관리 (Warning management)
-nowarn
컴파일 중 모든 경고를 억제해요.
-Werror
모든 경고를 컴파일 오류로 취급해요.
-Wextra
추가 선언·표현식·타입 컴파일러 검사를 활성화해서, 참이면 경고를 내보내요.
-Xrender-internal-diagnostic-names
경고와 함께 내부 진단 이름을 출력해요. 이는 -Xwarning-level 옵션에 설정된 DIAGNOSTIC_NAME을 식별하는 데 유용해요.
-Xwarning-level
특정 컴파일러 경고의 심각도 수준을 설정해요.
kotlinc -Xwarning-level=DIAGNOSTIC_NAME:(error|warning|disabled)
error: 지정된 경고만 오류로 올림.warning: 지정된 진단에 대해 경고를 내보내고 기본으로 활성화됨.disabled: 지정된 경고만 모듈 전체에서 억제.
모듈 전체 규칙과 특정 규칙을 결합해 프로젝트의 경고 보고를 조정할 수 있어요.
| 명령 | 설명 |
|---|---|
| -nowarn -Xwarning-level=DIAGNOSTIC_NAME:warning | 지정된 것 외의 모든 경고를 억제. |
| -Werror -Xwarning-level=DIAGNOSTIC_NAME:warning | 지정된 것 외의 모든 경고를 오류로 승격. |
| -Wextra -Xwarning-level=DIAGNOSTIC_NAME:disabled | 지정된 것 외의 모든 추가 검사를 활성화. |
일반 규칙에서 제외할 경고가 많다면 @argfile을 사용해 별도 파일에 나열할 수 있어요.
-Xrender-internal-diagnostic-names를 사용해 DIAGNOSTIC_NAME을 알아낼 수 있어요.
@argfile
주어진 파일에서 컴파일러 옵션을 읽어요. 그런 파일은 값이 있는 컴파일러 옵션과 소스 파일 경로를 담을 수 있어요. 옵션과 경로는 공백으로 구분해야 해요. 예를 들어:
-include-runtime -d hello.jar hello.kt
공백이 포함된 값을 전달하려면 값을 작은따옴표(')나 큰따옴표(")로 감싸세요. 값 안에 인용 부호가 있으면 백슬래시(\)로 이스케이프하세요.
-include-runtime -d 'My folder'
예를 들어 컴파일러 옵션과 소스 파일을 분리하려는 것처럼 여러 인자 파일을 전달할 수도 있어요.
$ kotlinc @compiler.options @classes
파일이 현재 디렉터리와 다른 위치에 있으면 상대 경로를 사용하세요.
$ kotlinc @options/compiler.options hello.kt
Kotlin/JVM 컴파일러 옵션
Kotlin JVM 컴파일러는 코틀린 소스 파일을 자바 클래스 파일로 컴파일해요. Kotlin에서 JVM으로의 컴파일용 커맨드라인 도구는 kotlinc와 kotlinc-jvm이에요. 코틀린 스크립트 파일 실행에도 쓸 수 있어요.
공통 옵션에 더해 Kotlin/JVM 컴파일러는 아래 나열된 옵션들이 있어요.
-classpath path (-cp path)
지정된 경로에서 클래스 파일을 검색해요. 클래스패스의 요소는 시스템 경로 구분자(Windows에서는 ;, macOS/Linux에서는 :)로 구분해요. 클래스패스는 파일·디렉터리 경로, ZIP 또는 JAR 파일을 담을 수 있어요.
-d path
생성된 클래스 파일을 지정된 위치에 배치해요. 그 위치는 디렉터리, ZIP, 또는 JAR 파일일 수 있어요.
-include-runtime
결과 JAR 파일에 코틀린 런타임을 포함해요. 결과 아카이브를 Java 지원 환경 어디서든 실행 가능하게 만들어요.
-jdk-home path
기본 JAVA_HOME과 다른 경우 클래스패스에 포함할 사용자 지정 JDK 홈 디렉터리를 사용해요.
-Xjdk-release=version
생성된 JVM 바이트코드의 대상 버전을 지정해요. 클래스패스에 있는 JDK의 API를 지정된 Java 버전으로 제한해요. -jvm-target version을 자동으로 설정해요. 가능한 값은 1.8, 9, 10, ..., 26이에요.
이 옵션은 모든 JDK 배포판에서 효과가 보장되지는 않아요.
-jvm-default mode
인터페이스에 선언된 함수가 JVM에서 기본 메서드(default methods)로 어떻게 컴파일될지 제어해요.
| 모드 | 설명 |
|---|---|
| enable | 인터페이스에 기본 구현을 생성하고 서브클래스와 DefaultImpls 클래스에 브리지 함수를 포함. (기본값) |
| no-compatibility | 인터페이스에만 기본 구현을 생성하고 호환성 브리지와 DefaultImpls 클래스는 생략. |
| disable | 기본 메서드를 생략하고 호환성 브리지와 DefaultImpls 클래스만 생성. |
-jvm-target version
생성된 JVM 바이트코드의 대상 버전을 지정해요. 가능한 값은 1.8, 9, 10, ..., 26이에요. 기본값은 1.8이에요.
-java-parameters
메서드 매개변수에 대한 Java 1.8 리플렉션 메타데이터를 생성해요.
-module-name name (JVM)
생성된 .kotlin_module 파일의 사용자 지정 이름을 설정해요.
-no-jdk
자바 런타임을 클래스패스에 자동으로 포함하지 않아요.
-no-reflect
코틀린 리플렉션(kotlin-reflect.jar)을 클래스패스에 자동으로 포함하지 않아요.
-no-stdlib (JVM)
Kotlin/JVM stdlib(kotlin-stdlib.jar)과 코틀린 리플렉션(kotlin-reflect.jar)을 클래스패스에 자동으로 포함하지 않아요.
-script-templates classnames[,]
스크립트 정의 템플릿 클래스. 완전 수식 클래스 이름을 사용하고 콤마(,)로 구분해요.
-Xdump-directory
-Xphases-to-dump-before 컴파일러 옵션의 덤프 파일 디렉터리를 설정해요.
-Xjvm-expose-boxed
모듈의 모든 인라인 값 클래스의 박싱된 버전과, 그것들을 쓰는 함수의 박싱된 변형을 생성해서 둘 다 Java에서 접근 가능하게 해요. 자세한 내용은 "Java에서 Kotlin 호출(Calling Kotlin from Java)" 가이드의 인라인 값 클래스를 참고하세요.
-Xnullability-annotations
코틀린 컴파일러가 특정 Java 패키지의 nullability 애너테이션을 어떻게 해석할지 설정해요.
지원되는 애너테이션과 설정 옵션 전체 목록은 Nullability annotations 문서를 참고하세요.
Kotlin/JS 컴파일러 옵션
Kotlin JS 컴파일러는 코틀린 소스 파일을 JavaScript 코드로 컴파일해요. Kotlin에서 JS로의 컴파일용 커맨드라인 도구는 kotlinc-js예요.
공통 옵션에 더해 Kotlin/JS 컴파일러는 아래 나열된 옵션들이 있어요.
-libraries path
.meta.js와 .kjsm 파일이 있는 코틀린 라이브러리의 경로를 시스템 경로 구분자로 구분해 나열해요.
-main {call|noCall}
실행 시 main 함수를 호출할지 정의해요.
-meta-info
메타데이터가 있는 .meta.js와 .kjsm 파일을 생성해요. JS 라이브러리를 만들 때 이 옵션을 사용하세요.
-module-kind {umd|commonjs|amd|plain}
컴파일러가 생성하는 JS 모듈의 종류예요.
umd- Universal Module Definition 모듈commonjs- CommonJS 모듈amd- Asynchronous Module Definition 모듈plain- 일반 JS 모듈
서로 다른 종류의 JS 모듈과 그 차이에 대해 더 알고 싶다면 이 문서를 참고하세요.
-no-stdlib (JS)
기본 Kotlin/JS stdlib을 컴파일 의존성에 자동으로 포함하지 않아요.
-output filepath
컴파일 결과의 대상 파일을 설정해요. 값은 이름을 포함한 .js 파일 경로여야 해요.
-output-postfix filepath
지정된 파일의 내용을 출력 파일의 끝에 추가해요.
-output-prefix filepath
지정된 파일의 내용을 출력 파일의 시작에 추가해요.
-source-map
소스 맵을 생성해요.
-source-map-base-dirs path
지정된 경로를 기본 디렉터리로 사용해요. 기본 디렉터리는 소스 맵의 상대 경로를 계산하는 데 사용돼요.
-source-map-embed-sources {always|never|inlining}
소스 파일을 소스 맵에 포함해요.
-source-map-names-policy {simple-names|fully-qualified-names|no}
코틀린 코드에서 선언한 변수·함수 이름을 소스 맵에 추가해요.
| 설정 | 설명 | 예시 출력 |
|---|---|---|
| simple-names | 변수 이름과 단순 함수 이름이 추가됨. (기본값) | main |
| fully-qualified-names | 변수 이름과 완전 수식 함수 이름이 추가됨. | com.example.kjs.playground.main |
| no | 변수·함수 이름이 추가되지 않음. | N/A |
-source-map-prefix
소스 맵의 경로에 지정된 접두사를 추가해요.
-target {es5|es2015}
지정된 ECMA 버전용 JS 파일을 생성해요.
-Xenable-implementing-interfaces-from-typescript
@JsExport 애너테이션으로 내보낸 코틀린 인터페이스를 JavaScript/TypeScript에서 구현할 수 있게 해요.
-Xes-long-as-bigint
최신 JavaScript(ES2020)로 컴파일할 때 코틀린 Long 값을 나타내기 위한 JavaScript BigInt 타입 지원을 활성화해요.
-Xsuspend-lambda-exporting
@JsExport 선언에 선언된 suspending 람다 표현식을 JavaScript async 함수로 내보낼 수 있게 해요.
Kotlin/Native 컴파일러 옵션
Kotlin/Native 컴파일러는 코틀린 소스 파일을 지원 플랫폼용 네이티브 바이너리로 컴파일해요. Kotlin/Native 컴파일용 커맨드라인 도구는 kotlinc-native예요.
공통 옵션에 더해 Kotlin/Native 컴파일러는 아래 나열된 옵션들이 있어요.
-enable-assertions (-ea)
생성된 코드에서 런타임 단언을 활성화해요.
-entry name (-e name)
완전 수식 엔트리 포인트 이름을 지정해요.
-g
디버그 정보 출력을 활성화해요. 이 옵션은 최적화 수준을 낮추므로 -opt 옵션과 함께 쓰면 안 돼요.
-generate-test-runner (-tr)
프로젝트에서 단위 테스트를 실행하기 위한 애플리케이션을 생성해요.
-generate-no-exit-test-runner (-trn)
명시적 프로세스 종료 없이 단위 테스트를 실행하기 위한 애플리케이션을 생성해요.
-include-binary path (-ib path)
외부 바이너리를 생성된 klib 파일 안에 패킹해요.
-library path (-l path)
라이브러리와 링크해요. Kotlin/Native 프로젝트에서 라이브러리를 사용하는 방법에 대해 더 알아보려면 Kotlin/Native 라이브러리 문서를 참고하세요.
-library-version version (-lv version)
라이브러리 버전을 설정해요.
-linker-option
바이너리 빌드 중 링커에 인자를 전달해요. 이것은 네이티브 라이브러리와 링크하는 데 사용할 수 있어요.
-linker-options args
바이너리 빌드 중 링커에 여러 인자를 전달해요. 인자는 공백으로 구분해요.
-list-targets
사용 가능한 하드웨어 타깃을 나열해요.
-manifest path
매니페스트 추가(addend) 파일을 제공해요.
-module-name name (Native)
컴파일 모듈의 이름을 지정해요. 이 옵션은 Objective-C로 내보낸 선언의 이름 접두사를 지정하는 데도 쓸 수 있어요. (코틀린 프레임워크에 사용자 지정 Objective-C 접두사/이름을 지정하는 방법)
-native-library path (-nl path)
네이티브 비트코드 라이브러리를 포함해요.
-no-default-libs
사용자 코드를 컴파일러와 함께 배포되는 사전 빌드된 플랫폼 라이브러리와 링크하지 않아요.
-nomain
main 엔트리 포인트가 외부 라이브러리에서 제공된다고 가정해요.
-nopack
라이브러리를 klib 파일로 패킹하지 않아요.
-nostdlib
stdlib과 링크하지 않아요.
-opt
컴파일 최적화를 활성화하고 런타임 성능이 더 좋은 바이너리를 생성해요. 최적화 수준을 낮추는 -g 옵션과 함께 쓰는 것은 권장하지 않아요.
-output name (-o name)
출력 파일의 이름을 설정해요.
-produce output (-p output)
출력 파일 종류를 지정해요.
programstaticdynamicframeworklibrarybitcode
-repo path (-r path)
라이브러리 검색 경로. 자세한 내용은 라이브러리 검색 순서(Library search sequence) 문서를 참고하세요.
-target target
하드웨어 타깃을 설정해요. 사용 가능한 타깃 목록을 보려면 -list-targets 옵션을 사용하세요.
-Xccall-mode
cinterop으로 가져온 C 또는 Objective-C 라이브러리의 새 상호운용(interop) 모드를 활성화해요.
-Xoverride-konan-properties=min.version.*
Apple 타깃의 최소 지원 버전을 코틀린 기본값보다 낮게 설정해요. 예를 들어:
kotlinc -Xoverride-konan-properties=minVersion.ios=14.0
kotlinc -Xoverride-konan-properties=minVersion.macos=11.0
kotlinc -Xoverride-konan-properties=minVersion.tvos=14.0
kotlinc -Xoverride-konan-properties=minVersion.watchos=7.0