メインコンテンツまでスキップ

Kotlinコンパイラーオプション

Kotlinの各リリースには、サポートされているターゲット(サポートされているプラットフォーム向けのJVM、JavaScript、およびネイティブバイナリ)用のコンパイラーが含まれています。

これらのコンパイラーは以下によって使用されます。

  • IDE。Kotlinプロジェクトで[Compile]または[Run]ボタンをクリックしたとき。
  • Gradle。コンソールまたはIDEでgradle buildを呼び出すとき。
  • Maven。コンソールまたはIDEでmvn compileまたはmvn test-compileを呼び出すとき。

コマンドラインコンパイラーの操作のチュートリアルで説明されているように、コマンドラインからKotlinコンパイラーを手動で実行することもできます。

コンパイラーオプション

Kotlinコンパイラーには、コンパイルプロセスを調整するための多くのオプションがあります。 さまざまなターゲット向けのコンパイラーオプションは、このページに各オプションの説明とともに記載されています。

コンパイラーオプションとその値(コンパイラー引数)を設定する方法はいくつかあります。

  • IntelliJ IDEAでは、Settings/Preferences | Build, Execution, Deployment | Compiler | Kotlin CompilerAdditional command line parametersテキストボックスにコンパイラー引数を記述します。
  • Gradleを使用している場合は、Kotlinコンパイルタスクの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"

共通オプション

次のオプションは、すべてのKotlinコンパイラーに共通です。

-version

コンパイラーのバージョンを表示します。

-nowarn

コンパイル中にコンパイラーが警告を表示しないようにします。

-Werror

すべての警告をコンパイルエラーに変えます。

-Wextra

trueの場合に警告を発する追加の宣言、式、および型のコンパイラーチェックを有効にします。

-verbose

コンパイルプロセスの詳細を含む、詳細なロギング出力を有効にします。

-script

Kotlinスクリプトファイルを評価します。このオプションを指定して呼び出すと、コンパイラーは指定された引数の中で最初のKotlinスクリプト(*.kts)ファイルを実行します。

-help (-h)

使用法情報を表示して終了します。標準オプションのみが表示されます。 詳細オプションを表示するには、-Xを使用します。

-X

詳細オプションに関する情報を表示して終了します。これらのオプションは現在不安定です。 それらの名前と動作は予告なく変更される場合があります。

-kotlin-home path

ランタイムライブラリの検出に使用されるKotlinコンパイラーへのカスタムパスを指定します。

-P plugin:pluginId:optionName=value

Kotlinコンパイラープラグインにオプションを渡します。 コアプラグインとそのオプションは、ドキュメントのコアコンパイラープラグインセクションにリストされています。

-language-version version

指定されたバージョンのKotlinとのソース互換性を提供します。

-api-version version

指定されたバージョンのKotlinバンドルライブラリからの宣言のみを使用できるようにします。

-progressive

コンパイラーのprogressive modeを有効にします。

progressive modeでは、不安定なコードの非推奨とバグ修正が、段階的な移行サイクルを経ずにすぐに有効になります。 progressive modeで記述されたコードは下位互換性がありますが、 非progressive modeで記述されたコードは、progressive modeでコンパイルエラーを引き起こす可能性があります。

@argfile

指定されたファイルからコンパイラーオプションを読み取ります。このようなファイルには、値を持つコンパイラーオプション とソースファイルへのパスを含めることができます。オプションとパスは空白で区切る必要があります。例:

-include-runtime -d hello.jar hello.kt

空白を含む値を渡すには、それらを単一(')または二重(")引用符で囲みます。値に 引用符が含まれている場合は、バックスラッシュ(\)でエスケープします。

-include-runtime -d 'My folder'

たとえば、コンパイラーオプションをソースファイルから分離するために、複数の引数ファイルを渡すこともできます。

$ kotlinc @compiler.options @classes

ファイルが現在のディレクトリとは異なる場所にある場合は、相対パスを使用します。

$ kotlinc @options/compiler.options hello.kt

-opt-in annotation

指定された完全修飾名を持つ要件アノテーションを使用して、opt-inが必要なAPIの使用を有効にします。

-Xsuppress-warning

特定の警告をプロジェクト全体でグローバルに抑制します。例:

kotlinc -Xsuppress-warning=NOTHING_TO_INLINE -Xsuppress-warning=NO_TAIL_CALLS_FOUND main.kt

Kotlin/JVMコンパイラーオプション

JVM用のKotlinコンパイラーは、KotlinソースファイルをJavaクラスファイルにコンパイルします。 KotlinからJVMへのコンパイル用のコマンドラインツールは、kotlinckotlinc-jvmです。 Kotlinスクリプトファイルの実行にも使用できます。

共通オプションに加えて、Kotlin/JVMコンパイラーには以下のオプションがあります。

-classpath path (-cp path)

指定されたパスでクラスファイルを検索します。クラスパスの要素は、システムパス区切り文字(Windowsでは**;、macOS/Linuxでは:**)で区切ります。 クラスパスには、ファイルとディレクトリのパス、ZIP、またはJARファイルを含めることができます。

-d path

生成されたクラスファイルを指定された場所に配置します。場所は、ディレクトリ、ZIP、またはJARファイルにすることができます。

-include-runtime

Kotlinランタイムを結果のJARファイルに含めます。結果のアーカイブをJava対応の任意の 環境で実行可能にします。

-jdk-home path

デフォルトのJAVA_HOMEと異なる場合に、クラスパスに含めるカスタムJDKホームディレクトリを使用します。

-Xjdk-release=version

生成されたJVMバイトコードのターゲットバージョンを指定します。クラスパス内のJDKのAPIを指定されたJavaバージョンに制限します。 -jvm-target versionを自動的に設定します。 可能な値は、1.8910、...、21です。

注記

このオプションは、各JDKディストリビューションに対して有効であることが保証されていません

-jvm-target version

生成されたJVMバイトコードのターゲットバージョンを指定します。可能な値は、1.8910、...、21です。 デフォルト値は1.8です。

-java-parameters

メソッドパラメーターに関するJava 1.8リフレクションのメタデータを生成します。

-module-name name (JVM)

生成された.kotlin_moduleファイルにカスタム名を付けます。

-no-jdk

Javaランタイムをクラスパスに自動的に含めません。

-no-reflect

Kotlinリフレクション(kotlin-reflect.jar)をクラスパスに自動的に含めません。

-no-stdlib (JVM)

Kotlin/JVM stdlib(kotlin-stdlib.jar)とKotlinリフレクション(kotlin-reflect.jar)を クラスパスに自動的に含めません。

-script-templates classnames[,]

スクリプト定義テンプレートクラス。完全修飾クラス名を使用し、コンマ(,)で区切ります。

Kotlin/JSコンパイラーオプション

JS用のKotlinコンパイラーは、KotlinソースファイルをJavaScriptコードにコンパイルします。 KotlinからJSへのコンパイル用のコマンドラインツールは、kotlinc-jsです。

共通オプションに加えて、Kotlin/JSコンパイラーには以下のオプションがあります。

-target {es5|es2015}

指定されたECMAバージョンのJSファイルを生成します。

-libraries path

.meta.jsファイルと.kjsmファイルを含むKotlinライブラリへのパス。システムパス区切り文字で区切ります。

-main {call|noCall}

実行時にmain関数を呼び出すかどうかを定義します。

-meta-info

メタデータを含む.meta.jsファイルと.kjsmファイルを生成します。JSライブラリを作成するときにこのオプションを使用します。

-module-kind {umd|commonjs|amd|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}

Kotlinコードで宣言した変数名と関数名をソースマップに追加します。

設定説明出力例
simple-names変数名と単純な関数名が追加されます。(デフォルト)main
fully-qualified-names変数名と完全修飾関数名が追加されます。com.example.kjs.playground.main
no変数名または関数名は追加されません。N/A

-source-map-prefix

指定されたプレフィックスをソースマップ内のパスに追加します。

Kotlin/Nativeコンパイラーオプション

Kotlin/Nativeコンパイラーは、Kotlinソースファイルをサポートされているプラットフォームのネイティブバイナリにコンパイルします。 Kotlin/Nativeコンパイル用のコマンドラインツールは、kotlinc-nativeです。

共通オプションに加えて、Kotlin/Nativeコンパイラーには以下のオプションがあります。

-enable-assertions (-ea)

生成されたコードでランタイムアサーションを有効にします。

-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)

ライブラリのバージョンを設定します。

-list-targets

利用可能なハードウェアターゲットをリストします。

-manifest path

マニフェスト追加ファイルを提供します。

-module-name name (Native)

コンパイルモジュールの名前を指定します。 このオプションを使用して、Objective-Cにエクスポートされる宣言の名前プレフィックスを指定することもできます。 KotlinフレームワークのカスタムObjective-Cプレフィックス/名前を指定するにはどうすればよいですか?

-native-library path (-nl path)

ネイティブビットコードライブラリを含めます。

-no-default-libs

コンパイラーとともに配布されるプリビルドプラットフォームライブラリとのユーザーコードのリンクを無効にします。

-nomain

mainエントリポイントが外部ライブラリによって提供されると想定します。

-nopack

ライブラリをklibファイルにパックしません。

-linker-option

バイナリの構築中にリンカーに引数を渡します。これは、一部のネイティブライブラリに対してリンクするために使用できます。

-linker-options args

バイナリの構築中にリンカーに複数の引数を渡します。引数を空白で区切ります。

-nostdlib

stdlibとリンクしません。

-opt

コンパイルの最適化を有効にし、ランタイムパフォーマンスが向上したバイナリを生成します。最適化レベルを下げる-gオプションと組み合わせることはお勧めしません。

-output name (-o name)

出力ファイルの名前を設定します。

-entry name (-e name)

修飾されたエントリポイント名を指定します。

-produce output (-p output)

出力ファイルの種類を指定します。

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

-repo path (-r path)

ライブラリ検索パス。詳細については、ライブラリ検索シーケンスを参照してください。

-target target

ハードウェアターゲットを設定します。利用可能なターゲットのリストを表示するには、-list-targetsオプションを使用します。