(3)CMake入门笔记--CMake官网教程

三. 安装与测试

这一步骤中,我们将为项目添加安装规则和测试支持。 安装规则非常简单。 对于MathFunctions库,我们通过将以下两行添加到MathFunctions的CMakeLists.txt文件来设置库和要安装的头文件:

install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h DESTINATION include)

对于应用程序,将以下行添加到顶级CMakeLists.txt文件以安装可执行文件和头文件:

# add the install targets
install (TARGETS Tutorial DESTINATION bin)
install (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"       
         DESTINATION include)

此时,您应该能够编译工程,然后键入make install(或从IDE构建INSTALL目标),它将安装相应的头文件,库和可执行文件。 CMake变量CMAKE_INSTALL_PREFIX用于确定文件的安装位置。

添加测试也是一个相当简单的过程。 在顶级CMakeLists.txt文件的末尾,我们可以添加许多基本测试来验证应用程序是否正常工作。

include(CTest)

# does the application run
add_test (TutorialRuns Tutorial 25)

# does it sqrt of 25
add_test (TutorialComp25 Tutorial 25)
set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")

# does it handle negative numbers
add_test (TutorialNegative Tutorial -25)
set_tests_properties (TutorialNegative PROPERTIES PASS_REGULAR_EXPRESSION "-25 is 0")

# does it handle small numbers
add_test (TutorialSmall Tutorial 0.0001)
set_tests_properties (TutorialSmall PROPERTIES PASS_REGULAR_EXPRESSION "0.0001 is 0.01")

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

构建完成后,可以运行“ctest”命令行工具来运行测试。 第一个测试只是验证应用程序运行,不会发生段错误或以其他方式崩溃,并且返回值为零。 这是CTest测试的基本形式。 接下来的几个测试都使用PASS_REGULAR_EXPRESSION测试属性来验证测试的输出是否包含某些字符串。 在这种情况下,验证计算出的平方根是应该是什么,并在提供不正确数量的参数时打印使用消息。 如果要添加大量测试来测试不同的输入值,可以考虑创建如下的宏:

#define a macro to simplify adding tests, then use it
macro (do_test arg result)
  add_test (TutorialComp${arg} Tutorial ${arg})
  set_tests_properties (TutorialComp${arg}
    PROPERTIES PASS_REGULAR_EXPRESSION ${result})
endmacro (do_test)

# do a bunch of result based tests
do_test (25 "25 is 5")
do_test (-25 "-25 is 0")

对于do_test的每次调用,将根据传递的参数向项目添加另一个测试,其中包含名称,输入和结果。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值