Gradle multi-проекты C и проблема зависимости Kotlin - PullRequest
0 голосов
/ 02 ноября 2019
  • Gradle 5.6.4

Вот структура проекта:

.
├── build.gradle
├── settings.gradle
├── ccode
|   ├── build.gradle
|   └── src
|       └── ccode
|           ├── c
|           |   └── ccode.c
|           └── headers
|               └── ccode.h
└── ktapp
    ├── build.gradle
    └── src
        ├── nativeInterop
        |   └── cinterop
        |       └── ccode.def
        └── nativeMain
                └── kotlin
                    └── main.kt

Эта ссылка была использована для сборки библиотеки из cкод с gradle.

По этой ссылке была добавлена ​​ссылка C и kotlin с cinterop. Вот содержимое настроек gradle:

Вот содержимое как build.gradle, так и settings.gradle в корне:

./build.gradle

subprojects {
    version = '1.0'
}

./settings.gradle

rootProject.name = 'app'
include 'ccode', 'ktapp'

Проблема в том, что ktapp строится до того, как ccode включает в себя заказ. Но ktapp требует ccode статической / совместно используемой сборки библиотеки.


Вот содержимое ktapp подпроекта ./ktapp/build.gradle:

plugins {
    id 'org.jetbrains.kotlin.multiplatform' version '1.3.21'
}

kotlin {
  linuxX64("native") {
    binaries {
      executable()
    }
  }
}

dependencies {
    compile project(':ccode') 
}

Вот содержимое ccode подпроекта ./ccode/build.gradle:

apply plugin: 'c'

model {
    components {
        ccode(NativeLibrarySpec)
    }
}

Попытка добавить следующий блок в конце ./ktapp/build.gradle file:

...

dependencies {
    compile project(':ccode') 
}

но gradle выдает ошибку:

Не удалось найти метод compile () для аргументов [project ': ccode'] для объекта типа org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...