gpt4 book ai didi

c - 仅使用 Gradle 构建静态库

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:27 25 4
gpt4 key购买 nike

我正在使用 Gradle 构建一个 C 项目,其中包括 sqlite3 作为 native 依赖项。我只想构建静态库,因为我不需要共享库 (.so)。在 Gradle 文档中,它指出两者都是默认构建的,但没有说明如何只构建一个或另一个。我已尝试为适当的二进制类型包含 buildable = false,但这会导致错误。我在下面附上了我的 build.gradle。我知道这个问题没有破坏任何东西,但它确实困扰着我,因为随着项目的发展,这将浪费大量的构建时间。

如有任何帮助或建议,我们将不胜感激!

apply plugin: 'c'

model {
components {
sqlite3(NativeLibrarySpec) {
sources.c {
source {
srcDir "lib/sqlite3"
include "*.c"
}
exportedHeaders {
srcDir "lib/sqlite3"
include "*.h"
}
}
// Attempted to make the shared Library unbuildable, but this results in a model error!
// binaries.withType(SharedLibraryBinarySpec) {
// buildable = false
// }
}
main(NativeExecutableSpec){
sources.c {
source{
srcDir "src"
include "**/*.c"
}
exportedHeaders {
srcDir "inc"
}
}

binaries.all {
lib library: 'sqlite3', linkage: 'static'
linker.args '-ldl', '-pthread', '-lpam', '-lgnutls', '-lgcrypt', '-levent'
}
}
}

toolChains {
clang(Clang)
}

tasks {
run(Task) {
dependsOn 'build'
doLast() {
mkdir('build/run')
println(' --- BEGIN OUTPUT ---\n')
exec {
executable '../binaries/mainExecutable/main'
workingDir './build/run'
}
println('\n --- END OUTPUT ---')
}
}
}
}

最佳答案

刚刚尝试重现@nicomp 的错误,它自行修复了。唯一的区别是我已经更新了 Gradle,所以这似乎是 Gradle 仍在实验性的 native 代码支持中的一个错误。

仅作记录,原始错误表示模型处于不可修改状态。根据谷歌的说法,当您在任务执行期间尝试修改模型时,应该会发生这种情况。这让我抓狂,因为我不是那样做的。

感谢所有看过的人!

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com