【问题标题】:Using pri files to reduce compiler time in Qt when building several projects在构建多个项目时使用 pri 文件减少 Qt 中的编译时间
【发布时间】:2014-02-28 16:44:26
【问题描述】:

我组织的项目包含应用程序和测试 pro 文件和 libs pri 文件,如下所示:

root
├── apps
│   ├── mainapp
│   │   ├── mainapp.pro
│   │   └── other mainapp files...
│   ├── app2
│   │   ├── app2.pro
│   │   └── other app2 files...
│   └── allApps.pro
├── libs
│   ├── lib1
│   │   ├── lib1.pri
│   │   └── other lib1 files...
│   └── lib2
│       ├── lib2.pri
│       └── other lib2 files...
├── tests
│   ├── test1
│   │   ├── test1.pro
│   │   └── other test1 files...
│   ├── test2
│   │   ├── test2.pro
│   │   └── other test2 files...
│   └── allTests.pro
└── all.pro

all.pro 是一个包含 allApps.proallTests.pro 的子目录项目,其中包含所有应用程序和测试 pro 文件。 p>

pri 文件是应用程序和测试项目包含的库。

当使用 qmake / make 构建 all.pro 时,我的库会为每个应用程序编译并进行测试,这非常耗时.. .

有没有办法让我的库中包含的文件只编译一次?

感谢您的帮助!

编辑

我确切地说我使用 pri 文件作为 lib,因为这是我发现使我的库代码可调试的唯一方法,并且在重建项目时会考虑更改。

【问题讨论】:

  • 太棒了!它现在完全符合我的要求 :-)
  • 我添加了一个关于我需要调试和自动重新链接的编辑,你可以复制你有用的评论,所以我接受你的回答。

标签: performance qt module compilation qmake


【解决方案1】:

您的树与您的叙述不一致:树中的任何地方都没有 .pri 文件。 IOW:您已经回答了自己的问题:您的库应该是 .pro 文件并生成静态库,而不是 .pri 文件:)

静态库是完全可调试的。例如,您可以将 Qt 编译为静态库并对其进行调试。

我还有一个问题:当我更改库中的某些内容时,应用程序不会自动链接它

您需要使应用程序依赖于库。将库添加到应用程序的 .pro 文件中的 PRE_TARGETDEPS。您还需要在顶级子目录项目中设置正确的依赖关系,以确保这些库始终在使用它们的项目之前构建。添加,例如

apps/mainapp.depends += libs/lib1. 

【讨论】:

    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 2010-12-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多