以下属性可用于计算编译器和链接器调用的时间:
- 规则_启动_编译 https://cmake.org/cmake/help/v3.4/prop_gbl/RULE_LAUNCH_COMPILE.html
- 规则_启动_自定义 https://cmake.org/cmake/help/v3.4/prop_gbl/RULE_LAUNCH_CUSTOM.html
- RULE_LAUNCH_LINK https://cmake.org/cmake/help/v3.4/prop_gbl/RULE_LAUNCH_LINK.html
这些属性可以在全局、每个目录和每个目标上设置。这样,您只能让一部分目标(例如测试)受到此属性的影响。此外,您还可以为每个目标设置不同的“启动器”,这也可能很有用。
请记住,直接使用“时间”是不可移植的,因为该实用程序并非在 CMake 支持的所有平台上都可用。然而,CMake 在其中提供了“时间”功能命令行工具模式 https://cmake.org/cmake/help/v3.4/manual/cmake.1.html#command-line-tool-mode。例如:
# Set global property (all targets are impacted)
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
# Set property for my_target only
set_property(TARGET my_target PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
CMake 输出示例:
[ 65%] Built target my_target
[ 67%] Linking C executable my_target
Elapsed time: 0 s. (time), 0.000672 s. (clock)
请注意,从 CMake 3.4 开始,只有 Makefile 和 Ninja 生成器支持此属性。
另请注意,从 CMake 3.4 开始cmake -E time
参数内有空格问题。例如:
cmake -E time cmake "-GUnix Makefiles"
将被解释为:
cmake -E time cmake "-GUnix" "Makefiles"
我呈交了patch http://public.kitware.com/pipermail/cmake-developers/2016-January/027533.html这解决了这个问题。