CMake教程讀書筆記-第三步,安裝與測試(2)

測試

相關代碼: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章