我正在寻找使用CMake计算编译时间的工具。目标项目构建了很多文件,所以我需要为每个模块制作一些“表”。例如,项目由两个文件组成- main.cc和libs.cc,我需要以不同的方式计算libs和main的构建时间。
我试图为g++设置包装器,但在make -j4中它有一些“竞争条件”。具有Building status和building的字符串交叉。
.......
[ 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发布于 2019-01-30 14:27:10
我的解决方案是:
#!/bin/bash
( /usr/bin/time -f "%S\t%U" g++ "$@" 2> >(cat <(echo "g++ $@") - )) | sponge海绵允许仅在程序退出后才放入输出
发布于 2019-01-27 13:13:36
请尝试在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")根据您的项目名称替换。
希望这能有所帮助。
https://stackoverflow.com/questions/54377926
复制相似问题