我试图计算我的代码库中每个文件需要多长时间才能编译的时间。将时间输出和它计时的命令写成一行
据this SO answer,你可以写一个脚本,做次实际编译,然后存储在一个文件中
/tmp/time-build
结果:
#!/bin/bash
{ time g++ "[email protected]"; } 2> >(cat <(echo "g++ [email protected]") - >> /tmp/results.txt)
然后,您可以覆盖CMAKE_CXX_COMPILER
调用cmake的时以便使用该脚本来执行汇编
cmake .. -DCMAKE_CXX_COMPILER=/tmp/time-build
make
这像宣传的那样,和产生的结果类似以下内容:
real 0m1.190s
user 0m1.044s
sys 0m0.140s
g++ -Werror -Wall -Wextra ... /src/test/foo.cpp
然而,为缓解加工,我想只存储real
时间,并将其上的G ++同一行命令。
问:
我的命令行拂达不到把这个任务:
{ time g++ "[email protected]"; } 2> >(cat <(echo "g++ [email protected]") - >> /tmp/results.txt)
进入仅仅捕捉时间的real
输出,包括它沿着命令一条线上的echo "g++ [email protected]"
。
我不知道是什么>(cat <(
和) -
份上述命令的意思的,我尝试结合了grep real
和echo
失败
我怎么能这样做?或者,如果有更习惯性的方法让cmake获得每个处理文件的输出时间,那也是理想的选择。
添加一点'sed'欺骗内联? –
@πάνταῥεῖ你能推荐一些吗? –
嗯,我的sed fu现在有点生疏了;-)。你有没有发现[相关](https://stackoverflow.com/questions/5962285/cmake-compilation-statistics)问题? –