• ofxTimeMeasurements——OpenFrameworks插件,可以轻松测量C++代码任何部分的执行时间


    一、简介

    ofxTimeMeasurements是一款用于OpenFrameworks 开源C++框架的插件,可以让使用者轻松测量C++代码任何部分的执行时间。其优势在于以图形化的方式显示代码执行时间。效果如下:

    只是它必须依赖OpenFrameworks,所以如果你不用这个框架,还是推荐用我之前写的《C++计算打印函数和代码块的执行时间(支持所有类型函数)》,来测量代码执行时间吧,那样更方便。

    二、下载编译OpenFrameworks

    首先下载OpenFrameworks。vs2017可以直接在 “拓展”->“管理扩展”->“联机” 中搜索和下载到此插件。但vs2019或更高版本的vs中则不行,必须手动下载安装。我用的是vs2019,下面演示在vs2019中手动安装的方法。

    下载 https://openframeworks.cc/versions/v0.10.1/of_v0.10.1_vs2017_release.zip 

    解压,进入目录libs\openFrameworksCompiled\project\vs,打开openframeworksLib.sln

    “生成”

    完成后可以看到在libs\openFrameworksCompiled\lib\vs\Win32中生成了openframeworksLib_debug.lib

    三、下载编译ofxTimeMeasurements例程

    在 https://github.com/armadillu/ofxTimeMeasurements 下载ofxTimeMeasurements源码

    新建vs控制台程序。按照如下结构将其头文件和源文件放进去。

    “视图”->“属性管理器”

    添加新项目属性表

    “PropertySheet” -> “属性” -> “用户宏” 将openFrameworksCompiled的根目录路径添加进去

    “PropertySheet” -> “属性” -> “C/C++” -> “常规” ->“附加包含目录” ,添加如下路径

    1. $(OF_ROOT)\libs\openFrameworks
    2. $(OF_ROOT)\libs\openFrameworks\graphics
    3. $(OF_ROOT)\libs\openFrameworks\app
    4. $(OF_ROOT)\libs\openFrameworks\sound
    5. $(OF_ROOT)\libs\openFrameworks\utils
    6. $(OF_ROOT)\libs\openFrameworks\communication
    7. $(OF_ROOT)\libs\openFrameworks\video
    8. $(OF_ROOT)\libs\openFrameworks\types
    9. $(OF_ROOT)\libs\openFrameworks\math
    10. $(OF_ROOT)\libs\openFrameworks\3d
    11. $(OF_ROOT)\libs\openFrameworks\gl
    12. $(OF_ROOT)\libs\openFrameworks\events
    13. $(OF_ROOT)\libs\glm\include
    14. $(OF_ROOT)\libs\rtAudio\include
    15. $(OF_ROOT)\libs\quicktime\include
    16. $(OF_ROOT)\libs\freetype\include
    17. $(OF_ROOT)\libs\freetype\include\freetype2
    18. $(OF_ROOT)\libs\freeImage\include
    19. $(OF_ROOT)\libs\fmod\include
    20. $(OF_ROOT)\libs\videoInput\include
    21. $(OF_ROOT)\libs\glew\include\
    22. $(OF_ROOT)\libs\glu\include
    23. $(OF_ROOT)\libs\tess2\include
    24. $(OF_ROOT)\libs\cairo\include\cairo
    25. $(OF_ROOT)\libs\glfw\include
    26. $(OF_ROOT)\libs\openssl\include
    27. $(OF_ROOT)\libs\utf8\include
    28. $(OF_ROOT)\libs\boost\include
    29. $(OF_ROOT)\libs\json\include
    30. $(OF_ROOT)\libs\curl\include
    31. $(OF_ROOT)\libs\uriparser\include
    32. $(OF_ROOT)\libs\pugixml\include
    33. $(OF_ROOT)\addons

    “PropertySheet” -> “属性” -> “链接器” -> “常规” -> “附加库目录” ,添加如下路径

    1. $(OF_ROOT)\libs\glfw\lib\vs\Win32
    2. $(OF_ROOT)\libs\rtAudio\lib\vs\Win32
    3. $(OF_ROOT)\libs\FreeImage\lib\vs\Win32
    4. $(OF_ROOT)\libs\freetype\lib\vs\Win32
    5. $(OF_ROOT)\libs\fmod\lib\vs\Win32
    6. $(OF_ROOT)\libs\videoInput\lib\vs\Win32
    7. $(OF_ROOT)\libs\cairo\lib\vs\Win32
    8. $(OF_ROOT)\libs\glew\lib\vs\Win32
    9. $(OF_ROOT)\libs\glu\lib\vs\Win32
    10. $(OF_ROOT)\libs\openssl\lib\vs\Win32
    11. $(OF_ROOT)\libs\curl\lib\vs\Win32
    12. $(OF_ROOT)\libs\tess2\lib\vs\Win32
    13. $(OF_ROOT)\libs\boost\lib\vs\Win32
    14. $(OF_ROOT)\libs\uriparser\lib\vs\Win32
    15. $(OF_ROOT)\libs\pugixml\lib\vs\Win32
    16. $(OF_ROOT)\libs\openFrameworksCompiled\lib\vs\Win32

    “PropertySheet” -> “属性” -> “链接器” -> “输入” -> “附加依赖项”,添加如下路径

    1. cairo-static.lib
    2. pixman-1.lib
    3. libpng.lib
    4. zlib.lib
    5. msimg32.lib
    6. OpenGL32.lib
    7. GLu32.lib
    8. kernel32.lib
    9. setupapi.lib
    10. Vfw32.lib
    11. comctl32.lib
    12. rtAudioD.lib
    13. videoInputD.lib
    14. libfreetype.lib
    15. FreeImage.lib
    16. dsound.lib
    17. user32.lib
    18. gdi32.lib
    19. winspool.lib
    20. comdlg32.lib
    21. advapi32.lib
    22. shell32.lib
    23. ole32.lib
    24. oleaut32.lib
    25. uuid.lib
    26. glew32s.lib
    27. fmod_vc.lib
    28. glu32.lib
    29. libssl.lib
    30. libcrypto.lib
    31. crypt32.lib
    32. libcurl.lib
    33. uriparser.lib
    34. pugixmld.lib
    35. Ws2_32.lib
    36. tess2.lib
    37. glfw3.lib
    38. winmm.lib
    39. odbc32.lib
    40. odbccp32.lib
    41. wldap32.lib
    42. openframeworksLib_debug.lib

    “解决方案资源管理器” 

    “属性” -> “C/C++” -> “常规” -> “附加包含目录” ,将ofxTimeMeasurements的头文件和源文件目录包含进去。 

    “SDL检查” -> 否

    “预处理器定义”,添加:_CRT_SECURE_NO_DEPRECATE

    _SCL_SECURE_NO_DEPRECATE
    BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE

    “代码生成” -> “运行库” -> “多线程调试 DLL (/MDd)”

    “链接器” -> “命令行” -> /NODEFAULTLIB:"libcmt.lib" 

    编译项目,编译过程中可能还有点小报错,根据提示修改即可。

    将of_v0.11.2_vs2017_release\libs\fmod\lib\vs\Win32中的fmod.dll、fmodL.dll

     

    of_v0.11.2_vs2017_release\libs\FreeImage\lib\vs\Win32中的FreeImage.dll

     

    拷贝到当前项目目录中

     

    然后运行即可看到效果:

    四、参考文章

    visual studio setup guide

    The setup to use oF with VS 2019

    Installing openFrameworks on Visual Studio 2019 for Windows

  • 相关阅读:
    独立按键程序
    基于SpringBoot的篮球竞赛预约平台
    工业智能网关BL110应用之七: 支持 Modbus ,MQTT,opc 等协议,上传到阿里华为云等LOT
    【Linux学习笔记3】-【指定运行级别,Linux找回root密码,帮助指令(man,help),查看以.开头的隐藏文件】
    MindSpore进阶课程视频集锦
    【算法训练-数组 三】【数组矩阵】螺旋矩阵、旋转图像、搜索二维矩阵
    html实现飞机小游戏(源码)
    节省工时超 1500人/天,国泰基金探索金融业人机协同新业态
    再下一城 | “GBASE数据库中华行—上海站”圆满落幕
    Java资深架构师详解java进阶技术体系与主流架构思维(建议入手)
  • 原文地址:https://blog.csdn.net/u014552102/article/details/128096688