CMake 教程(Step 4): 安装和测试

11 篇文章 0 订阅
本文介绍了如何在VSCode中使用CMake设置安装规则,包括MathFunctions库的头文件和可执行文件安装,以及应用程序的配置头文件。同时,也详细讲解了如何添加测试支持,包括单元测试和验证应用程序功能。
摘要由CSDN通过智能技术生成

注:

现在我们将开始向项目中添加安装规则和测试支持.

注: 接触过开源项目的同学,可能知道, 很多开源项目源码都是使用make工具进行编译和安装的, 使用make进行编译, make install进行安装. CMake也是类似的.

设置安装规则

安装规则相当简单:对于MathFunctions,我们希望安装库文件和头文件,而对于应用程序,我们希望安装可执行文件和可配置的头文件.

  • MathFunctions/CMakeLists.txt的末尾添加:
# 将`libMathFunctions.a`放到`lib`目录
install(TARGETS MathFunctions DESTINATION lib)
# 将`MathFunctions.h`放到`include`目录
install(FILES MathFunctions.h DESTINATION include)
  • 在顶层CMakeLists.txt的末尾添加:
# 将应用程序放到`bin`目录
install(TARGETS Tutorial DESTINATION bin)
# 将`TutorialConfig.h`放到`include`目录
install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"
  DESTINATION include
  )

在本地安装

  • 打开命令托盘(Ctrl + Shift + P), 输入: “cme”, 选择: “CMake: Edit CMake Cache(UI)”
    在这里插入图片描述
  • 在搜索框中输入: "install"完成筛选.
  • CMAKE_INSTALL_PREFIX的值修改为C:/tutorial,或其他不需要管理员权限的目录.
  • 点击"保存"
    在这里插入图片描述
  • 点击状态栏上的Build按钮, 重新构建.
  • 点击状态栏上Build按钮右侧的构建目标, 切换构建目标为"install".
  • 再次点击状态栏上的Build按钮, 完成安装. CMake将安装文件拷贝到CMAKE_INSTALL_PREFIX指定的目录下.
  • 现在你可以通过命令行窗口(cmd), 执行tutorial.exe程序了.
    在这里插入图片描述

测试支持

接下来,让我们测试应用程序. 在顶层CMakeLists.txt文件的末尾,我们可以启用测试,然后添加一些基本测试,以验证应用程序是否正常工作(如果是使用vscode生成的CMakeLists.txt, enable_testing()默认已添加到该文件中).

enable_testing()

# does the application run
add_test(NAME Runs COMMAND Tutorial 25)

# does the usage message work?
add_test(NAME Usage COMMAND Tutorial)
set_tests_properties(Usage
  PROPERTIES PASS_REGULAR_EXPRESSION "Usage:.*number"
  )

# define a function to simplify adding tests
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")

第一个测试只是验证应用程序是否运行,没有段故障或崩溃,并且返回值为零。这是CTest测试的基本形式。

下一个测试使用PASS_REGULAR_EXPRESSION测试属性来验证测试的输出是否包含某些字符串。在本例中,验证当提供的参数数量不正确时是否打印使用消息。

最后,我们创建了一个名为do_test的函数,它运行应用程序并验证计算出的平方根对于给定输入是否正确。每次调用do_test,都会向项目添加一个测试,该测试具有名称、输入参数和对应输入参数的预期结果。

  • 点击状态栏上的’Build’按钮, 重新构建.

  • 点击状态栏上的Run Test按钮, 运行测试.
    在这里插入图片描述

  • 输出窗口打印测试结果如下图所示:
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

falwat

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值