코틀린 컴파일러 옵션

코틀린 컴파일러 옵션 (Kotlin compiler options)

코틀린의 각 릴리스는 지원 대상(JVM, JavaScript, 지원 플랫폼용 네이티브 바이너리)을 위한 컴파일러를 포함해요.

이 컴파일러들은 다음과 같은 곳에서 사용돼요.

  • IDE에서 코틀린 프로젝트의 Compile 또는 Run 버튼을 클릭할 때.
  • 콘솔이나 IDE에서 gradle build를 호출할 때(Gradle).
  • 콘솔이나 IDE에서 mvn compile이나 mvn test-compile을 호출할 때(Maven).

명령줄 컴파일러를 수동으로 실행할 수도 있어요. 자세한 내용은 "커맨드라인 컴파일러 사용하기(Working with command-line compiler)" 튜토리얼을 참고하세요.

출처: 공식문서 - Kotlin compiler options

컴파일러 옵션

코틀린 컴파일러에는 컴파일 과정을 맞춤 구성하기 위한 많은 옵션(컴파일러 인자)이 있어요. 대상별 컴파일러 옵션은 이 페이지에 각각의 설명과 함께 정리돼 있어요.

컴파일러 옵션과 그 값(컴파일러 인자)을 설정하는 방법은 여러 가지예요.

  • 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

그 결과 실행 순서는 다음과 같아요.

  1. plugin.first
  2. plugin.middle
  3. plugin.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으로의 컴파일용 커맨드라인 도구는 kotlinckotlinc-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)

출력 파일 종류를 지정해요.

  • program
  • static
  • dynamic
  • framework
  • library
  • bitcode

-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

더 알아보기 (Learn more)