接下来我们会为我们的工程增加安装规则和测试支持。安装规则是非常非常简单的。对于MathFunctions库我们安装库和头文件只需要添加如下的语句:
安装(TARGETS MathFunctions DESTINATION bin)
安装(文件 MathFunctions.h DESTINATION 包括)
对于应用程序,我们只需要在顶层CMakeLists 文件中如此配置即可以安装可执行程序和配置了的头文件:
# 添加安装目标
install (TARGETS Tutorial DESTINATION bin)
install (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"
DESTINATION include)
这就是所有需要做的。现在你就可以编译这个教程了,然后输入make install(或者编译IDE中的INSTALL目标),则头文件、库和可执行程序等就会被正确地安装。CMake变量CMAKE_INSTALL_PREFIX被用来决定那些文件会被安装在哪个根目录下。添加测试也是一个相当简单的过程。在最顶层的CMakeLists文件的最后我们可以添加一系列的基础测试来确认这个程序是否在正确工作。
# 应用程序是否运行
add_test (TutorialRuns Tutorial 25)
# 是否运行 25 的 sqrt
add_test (TutorialComp25 Tutorial 25)
set_tests_properties (TutorialComp25
PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
# 是否处理负数
add_test (TutorialNegative Tutorial -25)
set_tests_properties (TutorialNeg)主动的
PROPERTIES PASS_REGULAR_EXPRESSION "-25 is 0")
# 它是否处理小数字
add_test (TutorialSmall Tutorial 0.0001)
set_tests_properties (TutorialSmall
PROPERTIES PASS_REGULAR_EXPRESSION "0.0001 is 0.01")
# 使用消息是否有效?
add_test (TutorialUsage 教程)
set_tests_properties (TutorialUsage
属性
PASS_REGULAR_EXPRESSION "用法:.*number")
第一个测试简单地确认应用是否运行,没有段错误或者其它的崩溃问题,并且返回0。这是CTest的最基本的形式。下面的测试都使用了PASS_REGULAR_EXPRESSION测试属性来确认输出的结果中是否含有某个字符串。如果你需要添加大量的测试来判断不同的输入值,则你需要考虑创建一个类似于下面的宏:
#定义一个宏来简化添加测试,然后使用它
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_test (25 "25 is 5")
do_test (-25 "-25 is 0")
对do_test的任意一次调用,就有另一个测试被添加到工程中。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!