在构建多个项目时,使用pri文件减少Qt中的编译时间

时间:2014-02-28 16:44:27

标签: performance qt module compilation qmake

我组织了我的项目包含应用程序和测试专业文件和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.pro allTests.pro ,其中包含所有应用和测试专业文件。

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

使用 qmake / make 构建 all.pro 时,我的库将针对每个应用程序和测试进行编译,这非常耗时。

我的库中包含的文件是否只编译一次?

感谢您的帮助!

修改

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

1 个答案:

答案 0 :(得分:1)

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

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

  

我还有另一个问题:当我在lib中更改内容时,应用程序不会自动链接它

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

apps/mainapp.depends += libs/lib1.