Как измерить время компиляции для объекта в CMake? - PullRequest
0 голосов
/ 26 января 2019

Я ищу инструмент, который поможет рассчитать время компиляции с помощью CMake. Целевой проект собирает много файлов, поэтому мне нужно составить несколько «таблиц» для каждого модуля. Например, проект состоит из 2 файлов - main.cc и libs.cc. Мне нужно по-разному рассчитать время сборки для libs и main.

Я пытаюсь установить обертку для g ++, но в make -j4 она имеет какое-то "условие гонки". Строки со статусом здания и временем строительства пересекаются.

.......
[  3%] Building CXX object irohad/simulator/CMakeFiles/block_creator_common.dir/block_creator_common.o
0.12    1.42
[  4%] Building CXX object schema/CMakeFiles/yac_grpc.dir/yac.grpc.pb.o
0.13    1.36
0.10    0.71
.......

Установить новый "Компилятор" - обёртка для g ++

#!/bin/bash
{ /usr/bin/time -f "%S\t%U" g++ "$@"; } 2> >(cat <(echo "g++ $@") - | cat)

, а затем

cmake -H. -Bbuild -DCMAKE_CXX_COMPILER=/path/to/script.sh
make | tee -a buildResults.txt


Ответы [ 2 ]

0 голосов
/ 30 января 2019

Мое решение:

#!/bin/bash
( /usr/bin/time -f "%S\t%U" g++ "$@" 2> >(cat <(echo "g++ $@") - )) | sponge

Губка позволяет выводить вывод только после выхода из программы

0 голосов
/ 27 января 2019

Пожалуйста, попробуйте добавить следующие строки в cmake, чтобы измерить время, которое вы можете скомпилировать с одним процессором, а затем запустить в параллельном режиме

set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")

set_property(TARGET <your target> PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")

заменить для имени вашего проекта.

Надеюсь, что этопомогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...