我正在寻找一种工具,该工具可帮助使用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
答案 0 :(得分:0)
请尝试在cmake中添加以下行,以测量您可以使用单个cpu编译然后以并行模式运行的时间
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
set_property(TARGET <your target> PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_COMMAND} -E time")
替换为您的项目名称。
希望这会有所帮助。
答案 1 :(得分:0)
我的解决方法是:
#!/bin/bash
( /usr/bin/time -f "%S\t%U" g++ "$@" 2> >(cat <(echo "g++ $@") - )) | sponge
海绵只允许在程序退出后放置输出