Android mingw32 make`-j`选项是否已损坏?
我正在使用QtCreator/wqt5.6为Android编译一个大项目(约40个库和1个可执行文件)。QtCreator使用“mingw492_32\bin\mingw32 make.exe”操作生成 当我使用默认选项编译时,我的所有项目都可以很好地编译 当我在QtCreator项目设置中将Android mingw32 make`-j`选项是否已损坏?,android,c++,mingw,qt-creator,Android,C++,Mingw,Qt Creator,我正在使用QtCreator/wqt5.6为Android编译一个大项目(约40个库和1个可执行文件)。QtCreator使用“mingw492_32\bin\mingw32 make.exe”操作生成 当我使用默认选项编译时,我的所有项目都可以很好地编译 当我在QtCreator项目设置中将-j4或-j8添加到mingw32 make.exe命令时,生成速度更快,但随机失败。在某种程度上,当库B与A链接时,我可以在日志中看到它试图链接B,而A编译尚未完成,因此它报告无法打开..../libA.
-j4
或-j8
添加到mingw32 make.exe
命令时,生成速度更快,但随机失败。在某种程度上,当库B
与A
链接时,我可以在日志中看到它试图链接B
,而A
编译尚未完成,因此它报告无法打开..../libA.so
请注意:
与B
链接的事实由A
在LIBS+=-l$$OUT\u PWD/./../lib/A/libA.so
的.pro文件中管理B
出现在顶级.pro文件的B
之后(A
)SUBDIRS+=A.pro B.pro
SUBDIRS+=A.pro B.pro
之后):
Ans也PRE_TARGETDEPS+=$$OUT\u PWD/./../lib/A/libA.so
inB.so
有了这些更改,使用-j4
选项的构建显然有效,它将我的项目编译时间分为3 根据,必须在.pro文件中明确指定依赖项
因此,我在我的顶级.pro文件中添加了(在SUBDIRS+=A.pro B.pro
之后):
Ans也PRE_TARGETDEPS+=$$OUT\u PWD/./../lib/A/libA.so
inB.so
有了这些更改,使用
-j4
选项的构建显然有效,它将我的项目编译时间分为3 不幸的是,Make在并行构建时不善于处理依赖项。这意味着它可以尝试构建依赖于其他尚未构建的东西的东西。@Someprogrammerdude:但是QtCreator是调用Make的人,它不应该支持吗?因为QtCreator在默认情况下不设置标志,那么,QtCreator创建的makefiles可能没有设置为很好地处理并行生成。@Someprogrammerdude:实际上它是受支持的,您只需要手动指定生成依赖项,请参阅我的答案。很遗憾,Make在处理并行生成时不擅长处理依赖项。这意味着它可以尝试构建依赖于其他尚未构建的东西的东西。@Someprogrammerdude:但是QtCreator是调用Make的人,它不应该支持吗?因为QtCreator在默认情况下不设置标志,那么,QtCreator创建的makefiles可能没有设置为很好地处理并行生成。@Someprogrammerdude:实际上它是受支持的,您只需要手动指定生成依赖项,请参阅我的答案。
CONFIG += ordered
B.depends += A