tei*_*vaz 6 qt cmake moc automoc
我有一个使用 CMake 构建的 QT 项目。其中一个目标有 142 个文件需要moc. 当我使用qt5_wrap_cpp源文件并构建它时,该过程在大约 15 秒内完成:

set(CMAKE_AUTOMOC NO)
qt5_wrap_cpp(moc_files ${source_files})
list(APPEND source_files ${moc_files})
target_sources("${target}" PRIVATE "${source_files}")
Run Code Online (Sandbox Code Playgroud)
这里的每个任务都是为每个文件调用moc工具。
然而,当我使用AUTOMOC特征时,生成时间增加到 6 分钟:

set(CMAKE_AUTOMOC YES)
target_sources("${target}" PRIVATE "${source_files}")
Run Code Online (Sandbox Code Playgroud)
这里的cmake任务大致如下:
cmake.exe -E cmake_autogen <my_project_path>/<my_project>_autogen.dir Debug
Run Code Online (Sandbox Code Playgroud)
我再次运行该命令,在没有任何内容可生成的情况下,运行需要 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
更新1。
在分析 CMake 之后,我注意到调用moc是最耗时的操作。命令行似乎有 247 个包含路径,而qt5_wrap_cpp.
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |