从gradle运行CMake,然后编译Kotlin代码

使用Gradle 5.4.1,我想为Android应用程序构建CMake项目。可以在 app / build.gradle 中通过以下方式完成:

externalNativeBuild {
    cmake {
        // Provides a relative path to your CMake build script.
        version "3.13.0+"
        path "../subproject/CMakeLists.txt"
    }
}

该项目通过使用SWIG生成共享库和一些Java文件。我可以通过 -DJAVA_OUTPUT_DIR = genic / java 指定Java源的输出目录。

在编译主应用程序源代码(Kotlin)之前,如何强制gradle等待CMake构建?源代码将导入生成的JAVA文件,并且当前由于缺少Java文件而导致构建过程失败。似乎gradle可以并行运行cmake和Kotlin编译器。

奖金问题:如何将生成的源输出目录作为生成的源添加到AndroidStudio项目树中?树中有一个用于生成源的特殊条目。

版本信息:

$ ./gradlew --version

------------------------------------------------------------
Gradle 5.4.1
------------------------------------------------------------

Build time:   2019-04-26 08:14:42 UTC
Revision:     261d171646b36a6a28d5a19a69676cd098a4c19d

Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          11.0.5 (Debian 11.0.5+10-post-Debian-1deb10u1)
OS:           Linux 4.19.0-6-amd64 amd64

gao421184686 回答:从gradle运行CMake,然后编译Kotlin代码

您应将cmake任务添加为compileKotlin任务的依赖项。

Gradle任务是部分排序的(某些任务应该在其他任务之前启动)。依赖关系用来表达这种关系。

要声明对externalNativeBuild的依赖关系,请将其附加到build.gradle

project.afterEvaluate {
    if (tasks.findByName("externalNativeBuildDebug")) {
        compileDebugKotlin.dependsOn externalNativeBuildDebug
    }
    if (tasks.findByName("externalNativeBuildRelease")) {
        compileReleaseKotlin.dependsOn externalNativeBuildRelease  
    }
}
  • afterEvaluate是什么?这是gradle的生命周期阶段。读取并应用所有定义时。了解更多here

  • externalNativeBuildDebugexternalNativeBuildRelease是什么?这些是对externalNativeBuild任务的引用,具体取决于特定的构建命令

本文链接:https://www.f2er.com/3139423.html

大家都在问