Cmake是否可以在命令行中的./main之前添加'time'来测量程序执行时间?

iecba09b  于 2022-11-11  发布在  其他
关注(0)|答案(1)|浏览(218)

我想测量我的C++视频处理程序处理一个视频所需的时间。我使用CLion编写程序,并设置了Cmake来编译和自动运行带有测试视频的程序。但是,为了计算执行时间,我一直在MacOS终端中使用以下命令:
% time ./main ../Media/test_video.mp4
有没有办法配置Cmake,使其在执行./main时自动包含time,从而进一步简化我的流程?
到目前为止,我已经尝试使用set(CMAKE_ARGS time "test_video.mp4")和一些命令行参数函数,但它们似乎没有以我所寻找的方式运行。

h7wcgrx3

h7wcgrx31#

可以使用add_custom_target来做您想要做的事情。我不会进一步考虑这个选项,因为它似乎滥用了构建系统来做一些它没有设计来做的事情。但是它可能比使用CLion配置有一个优势:它可以在CLion之外使用。这个优点似乎很小:为什么不直接在这些上下文中运行所需的命令呢?
第一个CLion方法是定义一个在当前构建目标上运行时的外部工具。|设定⋯|工具Name|外部工具定义了一个新的工具,其中/bin/time作为程序,$CMakeCurrentProductFile$ $Prompt$作为参数。当选择该工具时(在工具|External Tools),它现在会提示您输入参数,然后使用提供的参数在当前目标上运行/bin/time。优点:您不需要定义一次工具,它将在每个项目中可用。不便之处:外部工具在每个项目中都可用,因此对于参数和工作目录来说,比$Prompt$更具体是没有意义的;不可能指定环境变量,也不可能在运行命令之前强制执行构建需求。
第二个CLion方法将定义一个运行/调试配置。再次使用/bin/time作为程序(选择“自定义可执行文件”),指定$CMakeCurrentProductFile$作为第一个参数(这里根据需要提供其他参数是有意义的,但请注意,如果需要,$Prompt$仍然是一个有效的选择)。优点:根据需要具体化是有意义的;你拥有配置的所有特性(环境变量,输入重定向,指定在执行之前要执行的操作)。它不适用于其他CLion功能,这些功能假定程序是目标,如调试器、分析器等,因此您可能必须复制配置才能获得它们。
请注意,这些方法并不排斥:您可以定义一个外部工具,然后在更方便的情况下添加配置。

相关问题