在 Gradle 中禁用静态库构建
Disabling static library build in Gradle
我正在使用 gradle 为我们的 java 项目构建一个 JNI 库,它工作正常,但我似乎无法弄清楚如何阻止 gradle 构建文件的共享和静态版本。我想禁用静态库的构建以加快构建过程。添加"共享"标签似乎不起作用。
从 gradle 构建文件中:
libraries {
bulletjme {
shared
}
}
gradle手册指出:"例如,当你定义一个名为helloworld的库并在Linux上构建时,默认情况下,Gradle将生成 libhelloworld.so 和libhelloworld.a二进制文件。但是,它没有说明如何禁用任一二进制文件的构建。
感谢您的任何回答!
在 Gradle 2.11 中,这可以通过将可构建属性设置为 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
}
}
}
}
为了防止 gradle 为"main"组件构建静态库,您需要在 build.gradle 中具有以下代码:
model {
components {
main(NativeLibrarySpec) {
sources {
c {
binaries.withType(StaticLibraryBinarySpec) { bin ->
binaries.remove(bin)
}
}
}
}
}
}
相关文章:
- 如何使用cmake设置OpenCV以启用动态和静态构建
- 如何静态构建并在Windows上包含WolfSSL
- g libcurl静态构建在NGHTTP2库上失败
- 完全静态构建具有所有依赖项(libgcc等)的应用程序
- 使用MinGW 6.3.0时,Qt 5.7.0的静态构建无法完成
- 使用内置MySQL库的Qt静态构建
- 在windows 7上静态构建Qt 5.1.1-nmake和cl错误
- 使用静态构建curl链接项目
- 在Windows上静态构建CPython——链接问题
- 没有 DLL 依赖项的静态构建可执行文件
- Qt 5.4 静态构建在 Visual Studio 2013 中产生"unresolved external symbol"链接错误
- 使用Qt制作静态构建(独立应用程序)
- 在我的CMake项目中使用静态构建而不是OpenCV的共享构建
- 静态构建Qt后,我无法在Windows 7上编译/链接应用程序(GNU分配器错误)
- Qt静态构建在虚拟机(win7 32位)上需要很长时间
- 静态构建Qt 5.1
- 如何在c++XE5 embacadero中为项目创建静态构建
- 使用Visual Studio将静态构建的库链接到共享库可能存在内存风险
- 如何使用Qt的静态构建为Windows创建静态链接版本
- QT 5.7 MSVC 2015静态构建不工作