LoginSignup
3
2

More than 5 years have passed since last update.

VSCodeでKotlinのコンパイルのタスクを用意する

Posted at

はじめに

※ こちらは学習中の単純なメモなので、あまり詳しく記載していません。

ただいま何か新しい言語を...と思って勉強中。
Kotlinを使ってみようと思いましたが、コードハイライトの拡張機能はあるものの、ビルドタスクは自前で組まないといけないっぽい。

MavenやGradleでビルドすれば良さそうですが、まだそこまで学習していないので、とりあえず簡単にkotlincでビルドを目指します。

設定してみたファイル

  • KOTLIN_HOMEは ~/bin/kotlin に配置
  • ソースは WorkSpaceの src/tutorial/ 以下に *.kt で配置
    • コマンドラインでは大丈夫なんだけど、tasks.jsonでは *.ktとワイルドカードで指定すると、file not foundになってしまったので、パスで指定
  • 出力先は build/classes
{
    "version": "0.1.0",
    "tasks": [
        {
            "taskName": "kotlinc",
            "command": "kotlinc",
            "showOutput": "always",
            // *.ktのようにワイルドカード指定だと上手くいかないので、ディレクトリ指定で
            // kotlin_HOMEは ~/bin/kotlin に設定
            "args": ["-d","${workspaceRoot}\\build\\classes","-kotlin-home",
                "${env.HOME}/bin/kotlinc", "-verbose", 
                "${workspaceRoot}/src/tutorial/"],
            "isShellCommand": true
        },
        // ビルドされたバイナリを実行してみる
        // 実行時に対象のクラスを指定するにはどうするのかわからないので、クラスごとにハードコード
        // ここはなんとかしたい....
        {
            "taskName": "Run HelloKt",
            "command": "kotlin",
            "args": ["-classpath","build/classes/", "HelloKt"],
            "isShellCommand": true
        }
    ]
}

kotlincでコンパイルする

コンパイルは、Command + P -> Run Task -> kotlinc を選びます。
ログの出力結果は、こんな感じ。

logging: using Kotlin home directory /Users/akiko_pusu/bin/kotlinc
logging: configuring the compilation environment
output: output:
/Users/akiko_pusu/work/kotlin-memo\build\classes/HelloKt.class
Sources:
/Users/akiko_pusu/work/kotlin-memo/src/tutorial/hello.kt
output: output:
/Users/akiko_pusu/work/kotlin-memo\build\classes/META-INF/main.kotlin_module
Sources:
/Users/akiko_pusu/work/kotlin-memo/src/tutorial/hello.kt

実行する

実行は、Command + P -> Run Task -> Run HelloKt を選びます。
本当は、実行時に対象のクラスをVSCodeのタスクのダイアログボックスみたいなところで任意に入力したものに指定したいのですが、現在その方法がわからず...。

ひとまずハードコードしたもので実行。

Hello, World!

ファイル

もとのファイルはこんな感じです。
先は長いです...。

fun main(args: Array<String>) {
    println("Hello, World!")
}
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2