<kbd id="9plqc"><label id="9plqc"></label></kbd>

        <th id="9plqc"></th>
        1. <center id="9plqc"><video id="9plqc"></video></center>
          <sub id="9plqc"><form id="9plqc"><pre id="9plqc"></pre></form></sub>
          <nav id="9plqc"><form id="9plqc"><legend id="9plqc"></legend></form></nav>
          測試 · Modern CMake 您所在的位置:網(wǎng)站首頁 屬虎的幾月出生最好2022 測試 · Modern CMake

          測試 · Modern CMake

          #測試 · Modern CMake| 來源: 網(wǎng)絡整理| 查看: 265

          測試 General Testing Information

          你需要在你的主 CMakeLists.txt 文件中添加如下函數(shù)調(diào)用(而不是在子文件夾 CMakeLists.txt 中):

          if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) include(CTest) endif()

          這么做將可以使得具有 CMake 測試功能,并且具有一個 BUILD_TESTING 選項使得用戶可以選擇開啟或關閉測試(還有一些其他的設置)。或者你可以直接通過調(diào)用 enable_testing() 函數(shù)來開啟測試。

          當你添加你自己的測試文件夾時,你應該這么做:

          if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING) add_subdirectory(tests) endif()

          這么做的(譯者注:需要添加 CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)的原因是,如果有他人包含了你的包,并且他們開啟了 BUILD_TESTING 選項,但他們并不想構建你包內(nèi)的測試單元,這樣會很有用。在極少數(shù)的情況下他們可能真的想要開啟所有包的測試功能,你可以提供給他們一個可以覆蓋的變量(如下例的 MYPROJECT_BUILD_TESTING,當設置 MYPROJECT_BUILD_TESTING 為 ON 時,會開啟該項目的測試功能):

          if((CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME OR MYPROJECT_BUILD_TESTING) AND BUILD_TESTING) add_subdirectory(tests) endif()

          本書中的示例就使用了覆蓋變量的形式來開啟所有測試,因為主 CMake 項目確實想要運行所有子項目的測試功能。

          你可以這樣注冊一個測試目標(targets):

          add_test(NAME TestName COMMAND TargetName)

          如果你在 COMMAND 后寫了除 TargetName 之外的東西,他將會被注冊為在命令行運行的指令。在這里寫生成器表達式(generator-expression)也是有效的:

          add_test(NAME TestName COMMAND $)

          這么寫將會使用該目標生成的文件(也就是生成的可執(zhí)行文件)的路徑作為參數(shù)。

          將構建作為測試的一部分

          如果你想在測試時運行 CMake 構建一個項目,這也是可以的(事實上,這也是 CMake 如何進行自我測試的)。例如,如果你的主項目名為 MyProject 并且你有一個 examples/simple 項目需要在測試時構建,那么可以這么寫:

          add_test( NAME ExampleCMakeBuild COMMAND "${CMAKE_CTEST_COMMAND}" --build-and-test "${My_SOURCE_DIR}/examples/simple" "${CMAKE_CURRENT_BINARY_DIR}/simple" --build-generator "${CMAKE_GENERATOR}" --test-command "${CMAKE_CTEST_COMMAND}" ) 測試框架

          可以查看子章節(jié)了解主流測試框架的使用方式(recipes):

          GoogleTest: 一個 Google 出品的主流測試框架。不過開發(fā)可能有點慢。 Catch2: 一個現(xiàn)代的,具有靈巧的宏的 PyTest-like 的測試框架。 DocTest: 一個 Catch2 框架的替代品,并且編譯速度更快、更干凈(cleaner)。See Catch2 chapter and replace with DocTest.


          【本文地址】

          公司簡介

          聯(lián)系我們

          今日新聞

          推薦新聞

          專題文章
            CopyRight 2018-2019 實驗室設備網(wǎng) 版權所有
            黄色免费网站在线看,韩国精品在线观看,韩国美女一区二区,99国产热 齐河县| 江孜县| 大足县| 丰城市| 江油市| 罗平县| 万山特区| 通辽市| 灌南县| 肥乡县| 高平市| 宁陕县| 衡阳县| 曲周县| 县级市| 嫩江县| 油尖旺区| 洪湖市| 武威市| 扶绥县| 濉溪县| 曲靖市| 盈江县| 怀来县| 凤台县| 神池县| 洛南县| 县级市| 仁怀市| 临夏市| 囊谦县| 峨山| 琼中| 镇安县| 宜春市| 永定县| 东阳市| 吴桥县| 西乡县| 湘乡市| 犍为县| http://444 http://444 http://444 http://444 http://444 http://444