【发布时间】:2015-04-16 13:51:33
【问题描述】:
我正在尝试使用 gradle 构建一个本地 cpp 项目,该项目链接到外部 .o 对象文件。 让我们称之为 externalDep.o
正确的 gradle 语法是什么,以便在我构建静态库时包含此目标文件?
当前我的代码如下所示 我的项目 \ cpp\ headers\ objectFile\ 在 objectFile 目录中使用 externalDep.o 为我的项目添加标题和 cpp,因为 gradle 仅在 cpp 和标题中查找 .cpp 和 .hpp
在 cppCompiler args 之后,
libraries {
mylib {
binaries.all {
linker.args "path_to_externalDep.o"
}
}
}
但它在构建静态库时不包含此 .o 文件
(我正在寻找相当于
Make library source_file(i-k).o externalDep.o
) 谢谢
【问题讨论】:
-
我会在这里补充一点,我也尝试过 staticLibArchiver.args "path_to_externalDep.o" 但这包括了我的文件,但在上面做了一个 "ar"。由于这不是 .a 文件而是 .o 文件,这是错误的。
-
您是否验证了 path_to_externalDep 正确且文件存在?
-
感谢您的回复!是的,我确实确认了,我最终能够弄清楚。我有最初在 src 目录中的外部目标文件。我的错误是试图设置一个链接器参数来链接它。最后,我所要做的就是使用复制任务将目标文件复制到我的 cbkbuild/obj/..lib/projectCpp 文件夹中,它会自动被拾取并链接为 ar rcs lib.a objectfiles.o 的一部分
-
为什么这是一个错误?这通常应该是可能的......
-
酷。还有一件事 - 请注意在 Gradle 2.3 中。用于构建本机二进制文件的 DSL 已更改,因此您当前的代码需要进行一些修改(您可以在 Gradle 2.3 Release Notes 和 Building Native Binaries documentation 中阅读更多相关信息。