Dev909
Dev909

Reputation: 145

Gradle Kotlin Native - You have not specified any compilation arguments. No output has been produced

I'm pretty new to Gradle and Kotlin Native. I want to setup my build.gradle so that I can use Native to compile my code. I'm using the Konan plugin to do this. It worked fine when I hard-coded my class in the konanArtifacts.program.srcFiles. But obviously if I add more classes, I'll have to add the paths to srcFiles and I don't (and shouldn't) need to. So I looked around to find a way to add any classes I add automatically, and I attempted sourceSets. But when I try to run the compileKonanClientMingw task now my gradle console gives me the following:

error: you have not specified any compilation arguments. No output has been produced.

I'm not entirely sure that I'm using sourceSets correctly, but this seems to be the farthest I got. Below is my build.gradle

build.gradle:

buildscript {
    ext.kotlin_version = '1.2.41'
    ext.konan_version = '0.6'

    repositories {
        mavenCentral()
        maven {
            url  "https://dl.bintray.com/jetbrains/kotlin-native-dependencies"
        }
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:$konan_version"
    }
}

plugins {
    id 'java'
}

group 'net.dev909'
version '1.0'

apply plugin: 'kotlin'
apply plugin: 'konan'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

sourceSets.main.allSource.srcDir '/src/main/kotlin/'

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

konanArtifacts {
    program('client-' + version) {
        srcFiles sourceSets.main.runtimeClasspath
    }
}

Upvotes: 2

Views: 972

Answers (1)

Ilya Matveev
Ilya Matveev

Reputation: 191

Source sets are a part of the Java world and the Java plugin, so the Kotlin/Native plugin avoids using them to be independent on Java. But you still able to compile a bunch of classes, just specify the srcDir parameter:

konanArtifacts {
    program('client-' + version) {
        srcDir 'src/main/kotlin/'
    }
}

Also note that src/main/kotlin/ is a default source path. So if you use only this path, you don't need to specify it explicitly. You may just write:

konanArtifacts {
    program('client-' + version)
}

Upvotes: 2

Related Questions