Для синхронизации вызовов компилятора и компоновщика могут использоваться следующие свойства:
Эти свойства могут быть установлены глобально для каждого каталога и для каждой цели.Таким образом, это свойство может воздействовать только на подмножество ваших целей (скажем, тестов).Также вы можете иметь разные «пусковые установки» для каждой цели, которые также могут быть полезны.
Имейте в виду, что использование «времени» напрямую не переносимо, поскольку эта утилита доступна не на всех платформах, поддерживаемых CMake.Тем не менее, CMake обеспечивает функциональность «времени» в режиме командной строки *1020*.Например:
# 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"
Я отправил патч , который решает эту проблему.