美文网首页LinuxLinux学习之路
CMake教程读书笔记-第三步,安装与测试(2)

CMake教程读书笔记-第三步,安装与测试(2)

作者: QuietHeart | 来源:发表于2020-11-12 18:50 被阅读0次

测试

相关代码:3_test

添加测试也是一个非常直观的过程,主要步骤就是:包含 CTest , 调用 add_test, 调用 set_tests_properties

基本测试方式

在顶级 CMakeLists.txt 文件的底部,我们添加一些基本的测试来验证应用程序能够成功的工作:

######Do Test with basic instruction
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”)

上述测试,分别通过 add_test 调用项目可执行文件,并传入参数。特定情况,通过 set_tests_properties 对输出进行检测验证。在这里,验证计算好的平方根是不是正确的,并且如果提供了错误的参数,将会打印使用信息中打印。分述如下:

TutorialRuns, 测试运行 Tutorial 25 是否成功返回(返回0)。

TutorialComp25, 测试运行 Tutorial 25, 并且检测输出中是否有 25 is 5 字符串,以确定运行是否正确。

TutorialNegative, 测试运行 Tutorial -25, 并验证输出是否有 -25 is 0 字符串。

TutorialSmall, 测试运行 Tutorial 0.0001, 并验证输出是否有 0.0001 is 0.01 字符串。

TutorialUsage, 测试运行 Tutorial, 并验证输出中是否有 Usage:.*number 注意这里有正则表达式。

编译之后,我们可以运行 ctest 命令行工具来运行测试。

借助宏进行测试

前面的测试中,第一个测试仅仅验证应用程序是否运行,没有 segfault 或者崩溃信息,并且返回值为0.这是 CTest 测试的基本形式。接下来的几行利用了 PASS_REGULAR_EXPRESSION 测试属性来验证测试输出是否包含特定字符串。如果你想要加入许多包含不同输入值的的测试,你可能需要在顶级 CMakeLists.txt 考虑创建类似如下的宏:

#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 宏的调用,都会导致向项目中添加一个测试,包含该测试的名字、输入,以及基于其参数的结果输出。

过程

下面是大致输出:

生成 Makefile 之前

$ls -p
tree.cmakelog  tree.makelog  tree.origin  tree.testlog  tutorial/
$tree . >tree.origin
$cat tree.origin
.
├── tree.cmakelog
├── tree.makelog
├── tree.origin
├── tree.testlog
└── tutorial
    ├── CMakeLists.txt
    ├── MathFunctions
    │   ├── CMakeLists.txt
    │   ├── MathFunctions.h
    │   └── mysqrt.cpp
    ├── TutorialConfig.h.in
    └── tutorial.cpp

2 directories, 10 files

生成 Makefile 的过程

$cmake tutorial/
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/miracle/mydata/orgmode/data/f80366ab-6a10-4de9-9793-3a531afbc192/cmake/3_test
$tree . >tree.cmakelog
$ls
CMakeCache.txt  CTestTestfile.cmake    Makefile       Testing           cmake_install.cmake  tree.makelog  tree.testlog
CMakeFiles      DartConfiguration.tcl  MathFunctions  TutorialConfig.h  tree.cmakelog        tree.origin   tutorial
$cat tree.cmakelog
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── CMakeCCompiler.cmake
│   ├── cmake.check_cache
│   ├── CMakeCXXCompiler.cmake
│   ├── CMakeDetermineCompilerABI_C.bin
│   ├── CMakeDetermineCompilerABI_CXX.bin
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeRuleHashes.txt
│   ├── CMakeSystem.cmake
│   ├── CMakeTmp
│   │   └── CMakeFiles
│   │       └── cmTryCompileExec.dir
│   ├── CompilerIdC
│   │   ├── a.out
│   │   └── CMakeCCompilerId.c
│   ├── CompilerIdCXX
│   │   ├── a.out
│   │   └── CMakeCXXCompilerId.cpp
│   ├── ContinuousBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Continuous.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousSubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Experimental.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalSubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Makefile2
│   ├── Makefile.cmake
│   ├── NightlyBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Nightly.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyMemoryCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlySubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── progress.marks
│   ├── TargetDirectories.txt
│   └── Tutorial.dir
│       ├── build.make
│       ├── cmake_clean.cmake
│       ├── DependInfo.cmake
│       ├── depend.make
│       ├── flags.make
│       ├── link.txt
│       └── progress.make
├── cmake_install.cmake
├── CTestTestfile.cmake
├── DartConfiguration.tcl
├── Makefile
├── MathFunctions
│   ├── CMakeFiles
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── MathFunctions.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── cmake_clean_target.cmake
│   │   │   ├── DependInfo.cmake
│   │   │   ├── depend.make
│   │   │   ├── flags.make
│   │   │   ├── link.txt
│   │   │   └── progress.make
│   │   └── progress.marks
│   ├── cmake_install.cmake
│   └── Makefile
├── Testing
│   └── Temporary
├── tree.cmakelog
├── tree.makelog
├── tree.origin
├── tree.testlog
├── tutorial
│   ├── CMakeLists.txt
│   ├── MathFunctions
│   │   ├── CMakeLists.txt
│   │   ├── MathFunctions.h
│   │   └── mysqrt.cpp
│   ├── TutorialConfig.h.in
│   └── tutorial.cpp
└── TutorialConfig.h

42 directories, 164 files

编译的过程

$make
Scanning dependencies of target MathFunctions
[ 50%] Building CXX object MathFunctions/CMakeFiles/MathFunctions.dir/mysqrt.cpp.o
Linking CXX static library libMathFunctions.a
[ 50%] Built target MathFunctions
Scanning dependencies of target Tutorial
[100%] Building CXX object CMakeFiles/Tutorial.dir/tutorial.cpp.o
Linking CXX executable Tutorial
[100%] Built target Tutorial
$tree . >tree.makelog
$cat tree.makelog
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── CMakeCCompiler.cmake
│   ├── cmake.check_cache
│   ├── CMakeCXXCompiler.cmake
│   ├── CMakeDetermineCompilerABI_C.bin
│   ├── CMakeDetermineCompilerABI_CXX.bin
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeRuleHashes.txt
│   ├── CMakeSystem.cmake
│   ├── CMakeTmp
│   │   └── CMakeFiles
│   │       └── cmTryCompileExec.dir
│   ├── CompilerIdC
│   │   ├── a.out
│   │   └── CMakeCCompilerId.c
│   ├── CompilerIdCXX
│   │   ├── a.out
│   │   └── CMakeCXXCompilerId.cpp
│   ├── ContinuousBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Continuous.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousSubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Experimental.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalSubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Makefile2
│   ├── Makefile.cmake
│   ├── NightlyBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Nightly.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyMemoryCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlySubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── progress.marks
│   ├── TargetDirectories.txt
│   └── Tutorial.dir
│       ├── build.make
│       ├── cmake_clean.cmake
│       ├── CXX.includecache
│       ├── DependInfo.cmake
│       ├── depend.internal
│       ├── depend.make
│       ├── flags.make
│       ├── link.txt
│       ├── progress.make
│       └── tutorial.cpp.o
├── cmake_install.cmake
├── CTestTestfile.cmake
├── DartConfiguration.tcl
├── Makefile
├── MathFunctions
│   ├── CMakeFiles
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── MathFunctions.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── cmake_clean_target.cmake
│   │   │   ├── CXX.includecache
│   │   │   ├── DependInfo.cmake
│   │   │   ├── depend.internal
│   │   │   ├── depend.make
│   │   │   ├── flags.make
│   │   │   ├── link.txt
│   │   │   ├── mysqrt.cpp.o
│   │   │   └── progress.make
│   │   └── progress.marks
│   ├── cmake_install.cmake
│   ├── libMathFunctions.a
│   └── Makefile
├── Testing
│   └── Temporary
├── tree.cmakelog
├── tree.makelog
├── tree.origin
├── tree.testlog
├── tutorial
│   ├── CMakeLists.txt
│   ├── MathFunctions
│   │   ├── CMakeLists.txt
│   │   ├── MathFunctions.h
│   │   └── mysqrt.cpp
│   ├── TutorialConfig.h.in
│   └── tutorial.cpp
├── Tutorial
└── TutorialConfig.h

42 directories, 172 files

测试的过程

$ctest 
Test project /home/miracle/mydata/orgmode/data/f80366ab-6a10-4de9-9793-3a531afbc192/cmake/3_test
    Start 1: TutorialRuns
1/6 Test #1: TutorialRuns .....................   Passed    0.00 sec
    Start 2: TutorialComp25
2/6 Test #2: TutorialComp25 ...................   Passed    0.00 sec
    Start 3: TutorialNegative
3/6 Test #3: TutorialNegative .................***Failed  Required regular expression not found.Regex=[-25 is 0
]  0.00 sec
    Start 4: TutorialSmall
4/6 Test #4: TutorialSmall ....................   Passed    0.00 sec
    Start 5: TutorialUsage
5/6 Test #5: TutorialUsage ....................   Passed    0.00 sec
    Start 6: TutorialComp-25
6/6 Test #6: TutorialComp-25 ..................***Failed  Required regular expression not found.Regex=[-25 is 0
]  0.00 sec

67% tests passed, 2 tests failed out of 6

Total Test time (real) =   0.01 sec

The following tests FAILED:
          3 - TutorialNegative (Failed)
          6 - TutorialComp-25 (Failed)
Errors while running CTest
$tree . >tree.testlog 
$cat tree.testlog
.
├── CMakeCache.txt
├── CMakeFiles
│   ├── CMakeCCompiler.cmake
│   ├── cmake.check_cache
│   ├── CMakeCXXCompiler.cmake
│   ├── CMakeDetermineCompilerABI_C.bin
│   ├── CMakeDetermineCompilerABI_CXX.bin
│   ├── CMakeDirectoryInformation.cmake
│   ├── CMakeOutput.log
│   ├── CMakeRuleHashes.txt
│   ├── CMakeSystem.cmake
│   ├── CMakeTmp
│   │   └── CMakeFiles
│   │       └── cmTryCompileExec.dir
│   ├── CompilerIdC
│   │   ├── a.out
│   │   └── CMakeCCompilerId.c
│   ├── CompilerIdCXX
│   │   ├── a.out
│   │   └── CMakeCXXCompilerId.cpp
│   ├── ContinuousBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Continuous.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousSubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ContinuousUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Experimental.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalSubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── ExperimentalUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Makefile2
│   ├── Makefile.cmake
│   ├── NightlyBuild.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyConfigure.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyCoverage.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── Nightly.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyMemCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyMemoryCheck.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyStart.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlySubmit.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyTest.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── NightlyUpdate.dir
│   │   ├── build.make
│   │   ├── cmake_clean.cmake
│   │   ├── DependInfo.cmake
│   │   └── progress.make
│   ├── progress.marks
│   ├── TargetDirectories.txt
│   └── Tutorial.dir
│       ├── build.make
│       ├── cmake_clean.cmake
│       ├── CXX.includecache
│       ├── DependInfo.cmake
│       ├── depend.internal
│       ├── depend.make
│       ├── flags.make
│       ├── link.txt
│       ├── progress.make
│       └── tutorial.cpp.o
├── cmake_install.cmake
├── CTestTestfile.cmake
├── DartConfiguration.tcl
├── Makefile
├── MathFunctions
│   ├── CMakeFiles
│   │   ├── CMakeDirectoryInformation.cmake
│   │   ├── MathFunctions.dir
│   │   │   ├── build.make
│   │   │   ├── cmake_clean.cmake
│   │   │   ├── cmake_clean_target.cmake
│   │   │   ├── CXX.includecache
│   │   │   ├── DependInfo.cmake
│   │   │   ├── depend.internal
│   │   │   ├── depend.make
│   │   │   ├── flags.make
│   │   │   ├── link.txt
│   │   │   ├── mysqrt.cpp.o
│   │   │   └── progress.make
│   │   └── progress.marks
│   ├── cmake_install.cmake
│   ├── libMathFunctions.a
│   └── Makefile
├── Testing
│   └── Temporary
│       ├── CTestCostData.txt
│       ├── LastTest.log
│       └── LastTestsFailed.log
├── tree.cmakelog
├── tree.makelog
├── tree.origin
├── tree.testlog
├── tutorial
│   ├── CMakeLists.txt
│   ├── MathFunctions
│   │   ├── CMakeLists.txt
│   │   ├── MathFunctions.h
│   │   └── mysqrt.cpp
│   ├── TutorialConfig.h.in
│   └── tutorial.cpp
├── Tutorial
└── TutorialConfig.h

42 directories, 175 files

常用命令

$ mkdir build && cd build
$ cmake ../tutorial
$ make
$ ctest 
Test project /home/miracle/study/cmake/3_test/build
    Start 1: TutorialRuns
1/4 Test #1: TutorialRuns .....................   Passed    0.00 sec
    Start 2: TutorialUsage
2/4 Test #2: TutorialUsage ....................   Passed    0.00 sec
    Start 3: TutorialComp25
3/4 Test #3: TutorialComp25 ...................***Failed  Required regular expression not found.Regex=[25 is 5
]  0.00 sec
    Start 4: TutorialComp-25
4/4 Test #4: TutorialComp-25 ..................   Passed    0.00 sec

75% tests passed, 1 tests failed out of 4

Total Test time (real) =   0.01 sec

The following tests FAILED:
          3 - TutorialComp25 (Failed)
Errors while running CTest

相关文章

网友评论

    本文标题:CMake教程读书笔记-第三步,安装与测试(2)

    本文链接:https://www.haomeiwen.com/subject/bjgebktx.html