CMake Tutorial(3)——Installing and Testing

现在来为我们的工程添加安装和测试的功能。安装的规则很简单也很直接。对于MathFunctions库,我们可以通过在MathFunctions文件夹下的文件CMakeLists.txt中加入一下两行来完成对它的进行安装设置:

# add install
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命令就可以完成安装,它会把对应的header files,libraries,和可执行文件放入对应的位置。你可以通过修改CMake变量CMAKE_INSTALL_PREFIX来决定你的安装的根目录。在Linux下面,默认为/use/local。

现在,我们来为你的工程添加测试样例,方便你以后进行基本的测试,避免每次都要手动输命令。添加测试的方法也很简单,你可以通过在工程顶层目录下的CMakeLists.txt文件中加入和下面类似的代码,用于测试和验证你的应用是否正常工作。

# enable testing
enable_testing()

# does the application run
add_test (TutorialRuns Tutorial 25)

# does is 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"
  )

先来解释下add_test命令的使用,第一参数为测试样例的名称,第二个为测试对象,第三个是测试参数。
之后重新构建工程,你可以通过命令ctest进行测试。第一个测试用于验证程序是否在运行,并且没有发生段错误(segfault)或者崩溃,它会返回一个0。这是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操作,并接受两个参数arg,result。

CMake是一个用于管理项目构建过程的开源工具。它通过配置文件的方式来定义源代码、编译器选项、库依赖和构建规则等信息,并根据这些信息生成针对不同平台和编译器的构建脚本。 CMake的教程可以帮助我们更好地理解和使用这个工具。在教程中,我们可以学习到CMake的基本概念、语法和用法,以及如何编写CMakeLists.txt文件来定义项目的构建过程。 教程一般会从简单的示例开始,逐步介绍CMake的各个方面。首先,我们可以学习如何定义基本的项目信息,如项目名称、版本号和语言要求。然后,我们可以了解如何添加源代码文件、头文件目录和编译选项。接着,我们可以学习如何定义库依赖和链接选项,以及如何生成可执行文件或库文件。 教程还可以教我们如何使用CMake的命令来进行条件编译、循环遍历和文件查找等操作。此外,教程还会介绍如何使用CMake的变量、宏和函数来简化构建过程和提高代码的可读性。 通过学习CMake的教程,我们可以更加高效地管理和构建项目,提高代码的可维护性和可移植性。无论是小型项目还是大型项目,CMake都可以帮助我们更好地组织代码、管理依赖和发布软件。 总之,CMake的教程是学习和使用CMake的重要资源,它可以帮助我们掌握CMake的基本概念和用法,提高项目的构建效率和质量。希望通过学习CMake的教程,我们能够更加熟练地使用这个工具,为我们的项目开发和维护带来便利。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值