CMake AUTOMOC很慢

时间:2018-02-12 11:39:08

标签: qt cmake moc automoc

我有一个用CMake构建的QT项目。其中一个目标有142个文件需要moc。当我在源文件上使用qt5_wrap_cpp并构建它时,过程将在大约15秒内完成: qt5_wrap_cpp

set(CMAKE_AUTOMOC NO)
qt5_wrap_cpp(moc_files ${source_files})
list(APPEND source_files ${moc_files})
target_sources("${target}" PRIVATE "${source_files}")

此处的每项任务都是为每个文件调用moc工具。

但是当我使用AUTOMOC时,功能生成时间增加到6分钟: AUTOMOC YES

set(CMAKE_AUTOMOC YES)
target_sources("${target}" PRIVATE "${source_files}")

此处cmake任务大致如下:

cmake.exe -E cmake_autogen <my_project_path>/<my_project>_autogen.dir Debug

我再次运行命令,在没有任何生成的地方运行它需要0.3秒。 但是,当我删除一个moc文件时,该命令需要2秒才能运行。当需要生成5时:

  

TotalSeconds : 11.3493687

超过11秒。当我删除所有142个moc文件时,cmake_autogen的执行时间为:

  

TotalSeconds : 354.5894649

我没有在文档和CMake问题上找到任何相关内容。我可以做些什么来运行AUTOMOC和单个文件处理一样高效吗?

CMake版本3.10.2
Qt版本5.9.3

UPD 1。

在剖析CMake之后,我发现调用moc是最耗时的操作。似乎命令行有247个包含路径,而qt5_wrap_cpp不是这种情况。

0 个答案:

没有答案