Step4:安装和测试
1)对于MathFunctions我们想安装库和头文件,但是对于应用程序我们安装可执行程序和配置头文件。
MathFunctions/CMakeLists.txt的末尾增加如下:
install(TARGETS MathFunctions DESTINATION lib)
install(FILES MathFunctions.h DESTINATION include)
在上一级的CMakeList中增加:
install(TARGETS Tutorial DESTINATION bin)
install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"
DESTINATION include
)
生成的 Demo 文件和 MathFunctions 函数库 libMathFunctions.o 文件将会被复制到 /usr/local/bin 中,而 MathFunctions.h 和生成的 config.h 文件则会被复制到 /usr/local/include 中
2)测试
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_test)
# 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")
以下内容引用自:
原文链接:https://blog.csdn.net/qq_38450982/article/details/89156116
add_test():
运行的项目中添加测试。
add_test(<name> <command> [<arg>...])
添加一个名为<name>的测试。测试名称不包含空格、引号或CMake语法中特殊的其他字符。
<command>指定测试命令行。如果<command>指定了一个可执行目标(由add_executable()创建),它将被在构建时创建的可执行文件的位置自动替换。
<arg>为传递给<command>的参数。
set_tests_properties()对测试属性进行设置,函数原型如下:
set_tests_properties(test1 [test2...] PROPERTIES prop1 value1 prop2 value2)
PROPERTIES 包括有WILL_FAIL、PASS_REGULAR_EXPRESSION、FAIL_REGULAR_EXPRESSION。代码中用到的是PASS_REGULAR_EXPRESSION,如果设置了这个属性,测试输出将根据指定的正则表达式进行检查,并且至少有一个正则表达式必须匹配,否则测试失败。如我们以第一个测试为例:
-
add_test (TutorialComp25 Tutorial 25)
-
set_tests_properties (TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 is 5")
添加一个名为TutorialComp25的测试,调用可执行文件Tutorial, Tutorial的功能是计算平方根,并且传给它的参数为25。然后设置测试TutorialComp25的属性,将输出根据指定的正则表达式即“25 is 5”进行匹配,如果匹配成功,则测试成功,否则则失败。