Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android mingw32 make`-j`选项是否已损坏?_Android_C++_Mingw_Qt Creator - Fatal编程技术网

Android mingw32 make`-j`选项是否已损坏?

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.

我正在使用QtCreator/wqt5.6为Android编译一个大项目(约40个库和1个可执行文件)。QtCreator使用“mingw492_32\bin\mingw32 make.exe”操作生成

当我使用默认选项编译时,我的所有项目都可以很好地编译

当我在QtCreator项目设置中将
-j4
-j8
添加到
mingw32 make.exe
命令时,生成速度更快,但随机失败。在某种程度上,当库
B
A
链接时,我可以在日志中看到它试图链接
B
,而
A
编译尚未完成,因此它报告
无法打开..../libA.so

请注意:

  • B
    A
    链接的事实由
    LIBS+=-l$$OUT\u PWD/./../lib/A/libA.so
    B
    的.pro文件中管理
  • B
    出现在顶级.pro文件的
    A
    之后(
    SUBDIRS+=A.pro B.pro
根据,必须在.pro文件中明确指定依赖项

因此,我在我的顶级.pro文件中添加了(在
SUBDIRS+=A.pro B.pro
之后):

Ans也
PRE_TARGETDEPS+=$$OUT\u PWD/./../lib/A/libA.so
in
B.so

有了这些更改,使用
-j4
选项的构建显然有效,它将我的项目编译时间分为3

根据,必须在.pro文件中明确指定依赖项

因此,我在我的顶级.pro文件中添加了(在
SUBDIRS+=A.pro B.pro
之后):

Ans也
PRE_TARGETDEPS+=$$OUT\u PWD/./../lib/A/libA.so
in
B.so


有了这些更改,使用
-j4
选项的构建显然有效,它将我的项目编译时间分为3

不幸的是,Make在并行构建时不善于处理依赖项。这意味着它可以尝试构建依赖于其他尚未构建的东西的东西。@Someprogrammerdude:但是QtCreator是调用Make的人,它不应该支持吗?因为QtCreator在默认情况下不设置标志,那么,QtCreator创建的makefiles可能没有设置为很好地处理并行生成。@Someprogrammerdude:实际上它是受支持的,您只需要手动指定生成依赖项,请参阅我的答案。很遗憾,Make在处理并行生成时不擅长处理依赖项。这意味着它可以尝试构建依赖于其他尚未构建的东西的东西。@Someprogrammerdude:但是QtCreator是调用Make的人,它不应该支持吗?因为QtCreator在默认情况下不设置标志,那么,QtCreator创建的makefiles可能没有设置为很好地处理并行生成。@Someprogrammerdude:实际上它是受支持的,您只需要手动指定生成依赖项,请参阅我的答案。
CONFIG += ordered
B.depends += A