Параметры компилятора Kotlin
В каждой версии Kotlin поставляются компиляторы для поддерживаемых платформ: JVM, JavaScript и нативные двоичные файлы для поддерживаемых платформ.
Эти компиляторы используются IDE при нажатии кнопок Компилировать или Запустить для вашего проекта Kotlin.
Вы также можете запускать компиляторы Kotlin вручную из командной строки, как описано в руководстве Работа с компилятором из командной строки.
Параметры компилятора
Компиляторы Kotlin имеют ряд параметров для настройки процесса компиляции. Параметры компилятора для разных платформ перечислены на этой странице вместе с описанием каждого из них.
Существуют несколько способов задать параметры компилятора и их значения (аргументы компилятора):
- В IntelliJ IDEA введите аргументы компилятора в поле Дополнительные параметры командной строки в Настройки | Сборка, выполнение, развертывание | Компиляторы | Kotlin Compiler
- Если вы используете Gradle, укажите аргументы компилятора в свойстве
kotlinOptionsзадачи компиляции Kotlin. Подробности см. в Использование Gradle. - Если вы используете Maven, укажите аргументы компилятора в элементе
<configuration>узла плагина Maven. Подробности см. в Использование Maven. - Если вы запускаете компилятор из командной строки, добавьте аргументы компилятора непосредственно в вызов утилиты или запишите их в файл аргументов. Например:
$ kotlinc hello.kt -include-runtime -d hello.jar
Примечание: В Windows, когда вы передаёте аргументы компилятора, содержащие символы разделителей (пробелы,
=,;,,), заключите эти аргументы в двойные кавычки (").$ kotlinc.bat hello.kt -include-runtime -d "My Folder\hello.jar"
Общие параметры
Следующие параметры являются общими для всех компиляторов Kotlin.
-version
Отобразить версию компилятора.
-nowarn
Подавить вывод предупреждений компилятора во время компиляции.
-Werror
Превратить все предупреждения в ошибки компиляции.
-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
Включить постепенный режим для компилятора.
В постепенном режиме изменения, связанные с устаревшими функциями и исправлениями ошибок для нестабильного кода, вступают в силу немедленно, вместо постепенной миграции. Код, написанный в постепенном режиме, совместим с предыдущими версиями; однако код, написанный в обычном режиме, может привести к ошибкам компиляции в постепенном режиме.
@<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-исходные файлы в Java-файлы .class. Командные инструменты для компиляции Kotlin в JVM — kotlinc и kotlinc-jvm. Вы также можете использовать их для выполнения файлов Kotlin-скриптов.
Помимо общих параметров, компилятор Kotlin/JVM имеет следующие параметры.
-classpath <path> (-cp <path>)
Поиск файлов .class в указанных путях. Разделяйте элементы пути класса разделителями системного пути (; в Windows, : в macOS/Linux). Путь класса может содержать пути к файлам и каталогам, ZIP- или JAR-файлы.
-d <path>
Разместить сгенерированные файлы .class в указанном месте. Место может быть каталогом, ZIP- или JAR-файлом.
-include-runtime
Включить Kotlin-среду выполнения в результирующий JAR-файл. Делает результирующий архив исполняемым в любой Java-среде.
-jdk-home <path>
Использовать пользовательский домашний каталог JDK для включения в путь класса, если он отличается от значения по умолчанию JAVA_HOME.
-jvm-target <version>
Указать целевую версию сгенерированного байткода JVM. Возможные значения: 1.6, 1.8, 9, 10, 11, 12, 13 и 14. Значение по умолчанию 1.6.
-java-parameters
Генерировать метаданные для рефлексии Java 1.8 на параметрах методов.
-module-name <name>
Установить пользовательское имя сгенерированного файла .kotlin_module.
-no-jdk
Не включать автоматически Java-среду выполнения в путь класса.
-no-reflect
Не включать автоматически Kotlin-рефлексию (kotlin-reflect.jar) в путь класса.
-no-stdlib
Не включать автоматически Kotlin/JVM stdlib (kotlin-stdlib.jar) и Kotlin-рефлексию (kotlin-reflect.jar) в путь класса.
-script-templates <classnames[,]>
Шаблоны определений скриптов. Используйте полные имена классов и разделяйте их запятыми (,).
Параметры компилятора Kotlin/JS
Компилятор Kotlin для JS компилирует Kotlin-исходные файлы в JavaScript-код. Командный инструмент для компиляции Kotlin в JS — kotlinc-js.
Помимо общих параметров, компилятор Kotlin/JS имеет следующие параметры.
-libraries <path>
Пути к Kotlin-библиотекам с файлами .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
Не включайте автоматически стандартную библиотеку Kotlin/JS в зависимости от компиляции.
-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-prefix
Добавьте указанный префикс к путям в карте исходных данных.
Параметры компилятора Kotlin/Native
Компилятор Kotlin/Native компилирует Kotlin-исходные файлы в нативные двоичные файлы для поддерживаемых платформ. Командная утилита для компиляции Kotlin/Native — это kotlinc-native.
В дополнение к общим параметрам, компилятор Kotlin/Native имеет параметры, перечисленные ниже.
-enable-assertions (-ea)
Включить проверки во время выполнения в сгенерированном коде.
-g
Включить вывод отладочной информации.
-generate-test-runner (-tr)
Создать приложение для запуска модульных тестов из проекта.
-generate-worker-test-runner (-trw)
Создать приложение для запуска модульных тестов в потоке-рабочем.
-generate-no-exit-test-runner (-trn)
Создать приложение для запуска модульных тестов без явного выхода процесса.
-include-binary <path> (-ib <path>)
Упаковать внешний двоичный файл в сгенерированный файл klib.
-library <path> (-l <path>)
Связь с библиотекой. Дополнительные сведения об использовании библиотек в проектах Kotlin/native см. в разделе Библиотеки Kotlin/Native.
-library-version <version> (-lv)
Указать версию библиотеки.
-list-targets
Отобразить доступные аппаратные целевые платформы.
-manifest <path>
Предоставить файл расширения манифеста.
-module-name <name>
Укажите имя модуля компиляции. Этот параметр также может использоваться для указания префикса имени для объявлений, экспортированных в Objective-C: Как указать собственный префикс/имя Objective-C для моего фреймворка Kotlin?
-native-library <path>(-nl <path>)
Включить нативную библиотеку bitcode.
-no-default-libs
Отключить привязку пользовательского кода к стандартным библиотекам платформы, поставляемым с компилятором.
-nomain
Предполагается, что точка входа main будет предоставлена внешними библиотеками.
-nopack
Не упаковывать библиотеку в файл klib.
-linker-option
Передать аргумент компоновщику при построении двоичного файла. Это может быть использовано для привязки к какой-либо нативной библиотеке.
-linker-options <args>
Передать несколько аргументов компоновщику при построении двоичного файла. Разделять аргументы пробелами.
-nostdlib
Не привязываться к stdlib.
-opt
Включить оптимизацию компиляции.
-output <name> (-o <name>)
Установить имя выходного файла.
-entry <name> (-e <name>)
Указать полное имя точки входа.
-produce <output> (-p)
Указать тип выходного файла:
programstaticdynamicframeworklibrarybitcode
-repo <path> (-r <path>)
Путь поиска библиотек. Дополнительная информация в Последовательность поиска библиотек.
-target <target>
Установить аппаратную целевую платформу. Список доступных целевых платформ можно получить, используя параметр -list-targets.
© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/reference/compiler-reference.html