gpt4 book ai didi

c - Gradle:如何为 C/C++ 目标文件指定输出目录?

转载 作者:行者123 更新时间:2023-12-05 01:38:05 24 4
gpt4 key购买 nike

我有一个相当简单的 build.gradle 文件,它构建了一个 zlib 目录。不幸的是,生成的 *.o 文件散布在各个目录中。
例如

build/objs/zlib/shared/zlibC/xvtb7xzcn488esep2yp1v714/uncompr.o
build/objs/zlib/shared/zlibC/2osjpf8p443huii37rw8g7o7d/zutil.o
[...]
build/objs/zlib/shared/zlibC/bkho3m4h5simvpsegapx51g54/trees.o
build/objs/zlib/shared/zlibC/2zicemubjlmw82yi1ysriaup4/inflate.o

如何将所有生成的 *.o 文件的输出目录设置为 build/zlib(减去唯一 ID 目录)?

apply plugin: 'c'

FileCollection zlibfiles = files(
'adler32',
[...]
'trees',
'zutil')

model {
components {
zlib(NativeLibrarySpec) {
sources {
c {
source {
srcDir "."
include '*.c'
}
exportedHeaders {
srcDir '.'
}
}
}
}
}
binaries {
withType(SharedLibraryBinarySpec) {
if (targetPlatform.operatingSystem.linux) {
cppCompiler.args '-c', '-g', '-fPIC'
// relative paths are ignored by Gradle
// only fully qualified paths are recognized
// cppCompiler.args '-I', '../..'
cppCompiler.args '-I', "${rootDir}/zlib"
linker.args '-pthread'
}
}
}
}

我有一个查找复制任务,但这里的目标是正确使用 Gradle。我宁愿使用 Gradle 版本的 gcc/g++ '-o' 选项。

task zlibcopy (type: Copy) {
configurations {
conf
}
dependencies {
conf fileTree(dir: "${buildDir}/objs/zlib/shared/zlibC/")
}
from configurations.conf.getAsFileTree()
into "${rootDir}/build/client/ps/common/zlib"
}

Gradle :4.7
中央操作系统:7.4
java :1.8.0_144

最佳答案

显然,Gradle不允许将原生代码输出到指定的输出目录。您可以在唯一标识的输出目录中找到 *.o,在“共享”目录中找到 *.so,在“静态”目录中找到 *.a。该死的。

关于c - Gradle:如何为 C/C++ 目标文件指定输出目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50890534/

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