本文共 1859 字,大约阅读时间需要 6 分钟。
这一步骤中,我们将为项目添加安装规则和测试支持。 安装规则非常简单。 对于MathFunctions库,我们通过将以下两行添加到MathFunctions的CMakeLists.txt文件来设置库和要安装的头文件:
install (TARGETS MathFunctions DESTINATION bin)install (FILES MathFunctions.h DESTINATION include)
对于应用程序,将以下行添加到顶级CMakeLists.txt文件以安装可执行文件和头文件:
# add the install targetsinstall (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 runadd_test (TutorialRuns Tutorial 25)# does it sqrt of 25add_test (TutorialComp25 Tutorial 25)set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")# does it handle negative numbersadd_test (TutorialNegative Tutorial -25)set_tests_properties (TutorialNegative PROPERTIES PASS_REGULAR_EXPRESSION "-25 is 0")# does it handle small numbersadd_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 itmacro (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 testsdo_test (25 "25 is 5")do_test (-25 "-25 is 0")
对于do_test的每次调用,将根据传递的参数向项目添加另一个测试,其中包含名称,输入和结果。
转载地址:http://omhzb.baihongyu.com/