Linux
Linux software install
Google repo的使用
Vector AP StartApplication编译脚本解析
Yocto的cmake版本升级
不能自动安装的解决方式
S32G-BSP35.0-SDK使用方法
S32G从SDK生成文件系统的制作过程
Linux Samba设置
Linux添加双网卡
S32G USB-Redirector安装指南
VS code自动生成Doxygen格式注释
Linux下使用多线程下载
使用pandoc 生成带中文的pdf
minicom无法输入的问题解决办法
使用 systemd unit 添加一条路由规则
CMake 教程
步骤 1:基本起点
步骤 2:添加lib库
步骤 3:为库添加使用要求
步骤 4:添加生成器表达式
步骤 5:安装和测试
步骤 6:添加支持测试仪表板
步骤 7: 添加系统内省
步骤 8:自定义命令和生成的文
步骤 9:打包安装程序
步骤 10:选择静态库或共享库
步骤 11:添加导出配置
步骤 12:打包 Debug 和 Release
添加虚拟网卡
Vector AP 去掉防篡改校验
Vector AP startapplication编译与使用
Vector AP问题汇总
Vector AP大型项目开发流程
Vector AP EM
Vector AP 最简单的开发示例
Linux kernel 版本降级
Vector AP StartApplicaiton
startappplication-machine-design
startapplicaiton-machine-integration
amsr-vector-fs-em-executionmanager-design
amsr-vector-fs-em-executionmanager
Vector AP 复杂模型的开发
第一章 Machine和MachineDesign
第二章 Execute Manager
第三章 Log
第四章 State Manager
第五章 State Manager 源码的理解
第六章 Someip daemon
第七章 IPC Service Discovery Daemon
crond的使用方法
解决蓝牙鼠标在 Ubuntu 中单位时间内断开的问题
VPS服务器自建教程
v2rayA的客户端使用配置
GDB调试指南入门篇:揭开程序运行世界的神秘面纱
GDB调试指南高级篇:成为调试专家,掌控程序的命运
Linux安装PyQt5并配置Qt Designer
ADB 命令大全
GoogleTest(一)
GoogleTest(二)简单的TEST宏
GoogleTest(三)简单类函数测试
C++ Template
1. 函数模板
2. 类模板
3. 非类型模板参数
软件版本号规范
EPOLL
C++手札
C++ 使用{}初始化有哪些好处?
现代 C++ decltype 深入解析
函数对象(functor)
Linux性能剖析:CPU、内存、网络与I/O压力测试
AP StateManager
C++ Lambda表达式
C++ 中的Lambda表达式
Lambda 表达式语法
Lambda 表达式的示例
手动发送UDP数据包
pyqt5生成的UI界面不能输入中文
自己搭建repo镜像
摄影
Sony仿富士PP值设置
诗词歌赋
本文档使用 MrDoc 发布
-
+
首页
步骤 5:安装和测试
# Step 5: Installing and Testing ## Exercise 1 - Install Rules 通常,仅构建可执行文件是不够的,还应该能够进行安装。使用 CMake,我们可以使用 `install()` 命令指定安装规则。在 CMake 中支持构建的本地安装通常只需要指定安装位置以及要安装的目标和文件。 ### Goal 要安装 `Tutorial` 可执行文件和 `MathFunctions` 库。 ### Helpful Materials + `install()` ### Files to Edit + `MathFunctions/CMakeLists.txt` + `CMakeLists.txt` ### Getting Started 您提供了的起始代码位于`Step5`目录中。在这个练习中,完成`TODO 1`到`TODO 4`。 首先,更新`MathFunctions/CMakeLists.txt`以将`MathFunctions`和`tutorial_compiler_flags`库安装到`lib`目录。在同一个文件中,指定安装规则以将`MathFunctions.h`安装到`include`目录。 然后,更新顶层`CMakeLists.txt`以将`Tutorial`可执行文件安装到`bin`目录。最后,任何头文件应安装到`include`目录。请记住,`TutorialConfig.h`位于`PROJECT_BINARY_DIR`中。 ### Build and Run 创建一个名为`Step5_build`的新目录。 运行`cmake`可执行文件或`cmake-gui`来配置项目,然后使用您选择的构建工具构建它。 然后,通过在命令行中使用`cmake`)命令的`--install`选项(在3.15中引入,较旧版本的CMake必须使用`make install`)运行安装步骤。 这一步将安装相应的头文件、库和可执行文件。 例如: ```cmake cmake --install . ``` 对于多配置工具,请不要忘记使用`--config`参数来指定配置。 ```cmake cmake --install . --config Release ``` 如果使用集成开发环境(IDE),只需构建`INSTALL`目标即可。您也可以从命令行构建相同的安装目标,如下所示: ```cmake cmake --build . --target install --config Debug ``` CMake变量`CMAKE_INSTALL_PREFIX`用于确定文件将被安装到的根目录。如果使用`cmake --install`参数覆盖安装前缀。例如: ```cmake cmake --install . --prefix "/home/myuser/installdir" ``` 转到安装目录并验证已安装的`Tutorial`是否可运行。 ### Solution 安装我们项目的规则非常简单: + 对于`MathFunctions`,我们希望将库和头文件分别安装到`lib`和`include`目录中。 + 对于`Tutorial`可执行文件,我们希望将可执行文件和配置好的头文件分别安装到`bin`和`include`目录中。 因此,在`MathFunctions/CMakeLists.txt`的末尾,我们添加如下内容: #### TODO 1: MathFunctions/CMakeLists.txt ```cmake set(installable_libs MathFunctions tutorial_compiler_flags) if(TARGET SqrtLibrary) list(APPEND installable_libs SqrtLibrary) endif() install(TARGETS ${installable_libs} DESTINATION lib) ``` and #### TODO 2: MathFunctions/CMakeLists.txt ```cmake install(FILES MathFunctions.h DESTINATION include) ``` `Tutorial`可执行文件和配置好的头文件的安装规则类似。我们在顶层`CMakeLists.txt`的末尾添加如下内容: #### TODO 3,4: CMakeLists.txt ```cmake install(TARGETS Tutorial DESTINATION bin) install(FILES "${PROJECT\_BINARY\_DIR}/TutorialConfig.h" DESTINATION include ) ``` 这就是创建教程的基本本地安装所需的全部内容。 ## Exercise 2 - Testing Support CTest 提供了一种轻松管理项目测试的方法。可以通过 `add_test()` 命令添加测试。虽然本教程没有明确涵盖,但 CTest 与其他测试框架(如 `GoogleTest`之间有很多兼容性。 ### Goal 使用CTest为我们的可执行文件创建单元测试。 ### Helpful Materials + `enable_testing()` + `add_test()` + `function()` + `set_tests_properties()` + `ctest` ### Files to Edit + `CMakeLists.txt` ### Getting Started 提供的起始源代码位于`Step5`目录中。在这个练习中,完成`TODO 5`到`TODO 9`。 首先,我们需要启用测试。接下来,使用`add_test()`开始向我们的项目添加测试。我们将逐步添加3个简单的测试,然后您可以根据需要添加更多的测试。 ### Build and Run 导航到构建目录并重新构建应用程序。然后运行 **ctest** 可执行文件:`ctest -N` 和 `ctest -VV`。对于多配置生成器(例如 Visual Studio),必须使用 `-C <mode>` 标志指定配置类型。例如,要在调试模式下运行测试,请在构建目录中使用 `ctest -C Debug -VV`(而不是 Debug 子目录!)。释放模式将在相同的位置执行,但使用 `-C Release`。或者,从IDE中构建 `RUN_TESTS` 目标。 ### Solution 让我们测试我们的应用程序。在顶层 `CMakeLists.txt` 文件的末尾,我们首先需要使用 `enable_testing()` 命令启用测试。 #### TODO 5: CMakeLists.txt ```cmake enable_testing() ``` 测试启用后,我们将添加一些基本测试来验证应用程序是否正常工作。首先,我们使用 `add_test()` 创建一个测试,该测试运行 `Tutorial` 可执行文件并传入参数 25。对于这个测试,我们不会检查可执行文件的计算结果。此测试将验证应用程序是否运行,是否没有段错误或其他崩溃,并且是否具有零返回值。这是CTest测试的基本形式。 #### TODO 6: CMakeLists.txt ```cmake add_test(NAME Runs COMMAND Tutorial 25) ``` 接下来,让我们使用 `PASS_REGULAR_EXPRESSION` 测试属性来验证测试输出是否包含特定的字符串。在这种情况下,我们验证当提供了不正确数量的参数时是否打印了使用消息。 #### TODO 7: CMakeLists.txt ```cmake add_test(NAME Usage COMMAND Tutorial) set_tests_properties(Usage PROPERTIES PASS_REGULAR_EXPRESSION "Usage:.*number" ) ``` 我们接下来要添加的测试验证计算得到的值确实是平方根。 #### TODO 8: CMakeLists.txt ```cmake add_test(NAME StandardUse COMMAND Tutorial 4) set_tests_properties(StandardUse PROPERTIES PASS_REGULAR_EXPRESSION "4 is 2" ) ``` 这一个测试并不能让我们对它适用于所有传入值都有信心。我们应该添加更多的测试来验证这一点。为了轻松添加更多的测试,我们创建一个名为 `do_test` 的函数,该函数运行应用程序并验证给定输入的计算平方根是否正确。对于每次调用 `do_test`,都会根据传递的参数添加另一个测试到项目中,其中包括名称、输入和期望的结果。 #### TODO 9: CMakeLists.txt ```cmake function(do_test target arg result) add_test(NAME Comp${arg} COMMAND ${target} ${arg}) set_tests_properties(Comp${arg} PROPERTIES PASS_REGULAR_EXPRESSION ${result} ) endfunction() # do a bunch of result based tests do_test(Tutorial 4 "4 is 2") do_test(Tutorial 9 "9 is 3") do_test(Tutorial 5 "5 is 2.236") do_test(Tutorial 7 "7 is 2.645") do_test(Tutorial 25 "25 is 5") do_test(Tutorial -25 "-25 is (-nan|nan|0)") do_test(Tutorial 0.0001 "0.0001 is 0.01") ```
admin
2024年3月4日 10:41
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码