【问题标题】:Gradle: Including an object .o file while building a static libraryGradle:在构建静态库时包含一个对象 .o 文件
【发布时间】: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 NotesBuilding Native Binaries documentation 中阅读更多相关信息。

标签: gradle native


【解决方案1】:

我有最初在 src 目录中的外部目标文件。

我的错误是试图设置一个链接器参数来链接它。

最后,我所要做的就是使用复制任务将目标文件复制到我的 cbkbuild/obj/..StaticLibrary/projectCpp 文件夹,它会自动被拾取并链接为 ar rcs lib.a 的一部分对象文件.o

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多