mingw32-make '-j' 选项是否损坏

Is mingw32-make `-j` option broken?

本文关键字:损坏 是否 mingw32-make 选项      更新时间:2023-10-16

我正在使用适用于Android的QtCreator/w Qt 5.6编译一个大项目(~40个库和1个可执行文件(。QtCreator使用"mingw492_32\bin\mingw32-make.exe"来操作构建。

当我使用默认选项进行编译时,我的所有项目都可以正常编译。

当我在QtCreator项目设置中向mingw32-make.exe命令添加-j4-j8时,构建速度更快,但随机失败。在某些时候,虽然库BA的链接,但我可以在日志中看到它尝试链接BA编译尚未完成,因此它报告cannot open ..../libA.so

请注意:

  • 事实上,与A B链接由B的.pro文件中的LIBS += -l$$OUT_PWD/../../lib/A/libA.so管理。
  • B出现在顶级 .pro 文件中A后 ( SUBDIRS += A.pro B.pro (

根据 Qmake 项目依赖项(链接库(,依赖项必须在 .pro 文件中显式指定。

所以我在我的顶级 .pro 文件中添加了(SUBDIRS += A.pro B.pro之后(:

CONFIG += ordered
B.depends += A

安斯也PRE_TARGETDEPS += $$OUT_PWD/../../lib/A/libA.so B.so

通过这些更改,带有-j4选项的构建显然有效,它将我的项目编译时间除以 3!!