【问题标题】:How do I compile my Qt application into a static library?如何将我的 Qt 应用程序编译成静态库?
【发布时间】:2012-02-17 01:51:47
【问题描述】:

我的主项目有一个复杂的后端(以及编译过程)。 因此,我不想向该系统介绍构建 Qt Gui 所需的所有额外内容。

因此,我想静态编译 Qt GUI 端,然后在最后添加一点-lmygui 到我的构建过程中。

注意:这并不是说我希望所有的 Qt 库都是静态构建的(这样做会违反 LGPL)。本质上,它应该与我静态构建后端并将其链接到 qt 相同(这将是我的第二个选择,但是一个劣质的解决方案)。

我该怎么做?

【问题讨论】:

  • 您的意思是要将您的 GUI 代码和 Qt 链接到一个库中,这样您只需将该库静态链接到您的项目中,对吗?还是我没有正确理解你。
  • @TylerGill 差不多,我希望我的 gui 代码(使用 qt)动态链接到 qt,但除此之外

标签: c++ qt compilation


【解决方案1】:

我将假设您正在使用 qmake 项目文件 (.pro) 来构建这个库。如果您这样做,只需将 .pro 文件的 TEMPLATE=app 部分替换为:

TEMPLATE=lib
CONFIG+=staticlib

【讨论】:

    【解决方案2】:

    简单地说,你不能那样做。 Qt 需要的不仅仅是 -mygui,如果您在类中使用信号和插槽,您还需要运行“moc”可执行文件,它将解析您的 c++ 文件并生成“moc_sources.cxx”文件,这些文件也将被编译与您的项目。在不运行 moc 的情况下,无法仅链接到 qt,如果您的界面使用 *.ui 文件,您还需要运行 uic,这将生成适当的源。

    【讨论】:

    • 所有这些都将完成。只是编译将在链接之前停止。即在生成目标文件后,它们只是链接到静态库而不是可执行文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    相关资源
    最近更新 更多