我有一个包含大量MOCable头文件(~350)的项目。到目前为止,该项目一直在MSVC2012上使用Qt4,但最近我移植它以与Qt5兼容。在Qt4下,moc步骤将非常快,每秒完成5次或更多次。然而,对于Qt5,这已变得非常慢 - 每个头文件大约4-5秒。使用其他并行(多核)构建只需要15分钟左右,这使我的重建时间增加了两倍。
答案 0 :(得分:1)
我找到了罪魁祸首:qmake生成的预构建步骤添加了一个读取选项文件的参数:
@path/to/mocinclude.tmp
此选项文件包含一长列include路径指令(在我的例子中为114)。我发现对于我的所有MOCable标头,如果跳过选项文件指令,生成的代码完全相同,加上moc步骤则需要几分之一秒。
我的稍微麻烦的解决方法是通过批处理文件为我的项目运行qmake,并在批处理文件的末尾添加一行以用空白文件覆盖选项文件,如下所示:
copy /y NUL path\to\mocinclude.opt
但是,知道为什么提供该选项文件会导致moc延迟这么长时间。