【问题标题】:Qt 5.2.0 generate single .o file [duplicate]Qt 5.2.0生成单个.o文件[重复]
【发布时间】:2014-01-10 19:06:54
【问题描述】:

现在 Qt 在我的项目中为每个.cpp 文件生成一个.o 文件。我可以强制它只生成一个巨大的.o 文件吗?或者我可以使用一些实用程序将多个.o 文件转换为一个文件吗?

编辑1: 我这样做的原因是因为我想编译一个signle exe(没有dll)但是LGPL 要求静态链接的程序必须提供它的目标文件。这里(https://stackoverflow.com/a/17736670/1389883)写道,我只能提供一个巨大的目标文件。

【问题讨论】:

  • 不要认为这是可能的。但也许你可以解释想要这样做的原因。通常,将对象打包在一起是在创建静态库时完成的。
  • 这不只是一个优化标志吗?
  • 我不知道。哪一个?
  • 也许不是创建一个巨大的 obj 文件(这不可能不破坏您的项目结构),而是创建一个静态库?这是一个包含 obj 文件的存档。我认为静态库将满足 LGPL 要求。
  • @ThijsvanDien:为什么会重复? OP似乎没有提到gcc。如果它需要跨平台或仅适用于 clang 和/或 msvc 怎么办? :)

标签: c++ qt


【解决方案1】:

您的问题不清楚您正在使用哪个工具链,所以我假设您需要一个跨平台的解决方案,而不是一个特定的解决方案。

我认为您正在寻找我们在 KDE 中使用的东西 KDE4_ENABLE_FINAL。它会通过拥有一个你想要的目标文件来减少链接时间,但另一方面,它肯定会使用更多的内存。

您可以检查该 cmake 变量在下面是如何处理的。它基本上只是将源文件连接在一起成为一个编译单元。之所以这样做,是因为底层工具链没有这样的直接选项。

【讨论】:

  • 是 gcc 还是 ld 的选项?你能提供链接吗?
  • @sim:不,不是。这是工具链之上的一个技巧。请注意,OP 没有提到 gcc。
猜你喜欢
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多