(3)CMake入門筆記--CMake官網教程

三. 安裝與測試

這一步驟中,我們將爲項目添加安裝規則和測試支持。 安裝規則非常簡單。 對於MathFunctions庫,我們通過將以下兩行添加到MathFunctions的CMakeLists.txt文件來設置庫和要安裝的頭文件:

install (TARGETS MathFunctions DESTINATION bin)
install (FILES MathFunctions.h DESTINATION include)

對於應用程序,將以下行添加到頂級CMakeLists.txt文件以安裝可執行文件和頭文件:

# add the install targets
install (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 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")

構建完成後,可以運行“ctest”命令行工具來運行測試。 第一個測試只是驗證應用程序運行,不會發生段錯誤或以其他方式崩潰,並且返回值爲零。 這是CTest測試的基本形式。 接下來的幾個測試都使用PASS_REGULAR_EXPRESSION測試屬性來驗證測試的輸出是否包含某些字符串。 在這種情況下,驗證計算出的平方根是應該是什麼,並在提供不正確數量的參數時打印使用消息。 如果要添加大量測試來測試不同的輸入值,可以考慮創建如下的宏:

#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的每次調用,將根據傳遞的參數向項目添加另一個測試,其中包含名稱,輸入和結果。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章