java - 在 Gradle 中禁用静态库构建

标签 java c++ gradle native

我正在使用 gradle 为我们的 java 项目构建 JNI 库,它工作正常,但是我似乎无法弄清楚如何阻止 gradle 构建文件的共享版本和静态版本。我想禁用静态库的构建以加快构建过程。添加“共享”标签似乎并不能解决问题。

来自 gradle 构建文件:

libraries {
  bulletjme {
      shared
  }
}

gradle 手册指出“例如,当您定义一个名为 helloworld 的库并在 Linux 上构建时,Gradle 默认情况下会生成 libhelloworld.so 和 libhelloworld.a 二进制文件。”但是,它没有说明如何禁用任一二进制文件的构建。

感谢您的回答!

最佳答案

在 Gradle 2.11 中,可以通过将 buildable 属性设置为 false 来设置此功能。虽然文档说它是只读的,但它确实有效。

model {
    components {
        library(NativeLibrarySpec) {
            binaries.withType(StaticLibraryBinarySpec) {
                buildable = false
            }
        }
    }
}

检查组件输出时,Gradle 现在会提示用户禁用了库:

$ gradle components
...
Binaries
Shared library 'library:sharedLibrary'
    build using task: :librarySharedLibrary
    build type: build type 'debug'
    flavor: flavor 'default'
    target platform: platform 'linux_x86-64'
    tool chain: Tool chain 'gcc' (GNU GCC)
    shared library file: build/libs/library/shared/liblibrary.so
Static library 'library:staticLibrary' (not buildable)
    build using task: :libraryStaticLibrary
    build type: build type 'debug'
    flavor: flavor 'default'
    target platform: platform 'linux_x86-64'
    tool chain: Tool chain 'gcc' (GNU GCC)
    static library file: build/libs/library/static/liblibrary.a
    Disabled by user

这也可以同时对所有库进行全局处理:

model {
    components {
        libraryA(NativeLibrarySpec)
        libraryB(NativeLibrarySpec)
        all {
            binaries.withType(StaticLibraryBinarySpec) {
                buildable = false
            }
        }
    }
}

关于java - 在 Gradle 中禁用静态库构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929052/

相关文章:

java - 将数据存储在arraylist中并在下次启动程序时保存

gradle - 如何在gradle中从外部传递版本范围

c++ - 数组运算符 [] 重载 const 和非常量版本

gradle - Kotlin 1.3.20 with Gradle 5.1.1 compileKotlin2Js 执行热重载

java - Gradle无法找到Spring核心jar

Java 8流分组按字符串值

java - Mockito 非 stub 函数

java - 否定前瞻java

c++ - 如何在NetBeans(Linux)中链接库?

C++ STL : Trouble with iterators