2010-07-20 49 views
2

這是一個衆所周知的問題,執行make「test」不會構建測試,如討論的here。正如所建議的,這個問題可以通過人造目標「檢查」部分解決。當我打電話給「夜間製作」時,我想知道如何強制進行測試。CMake和CTest:如何讓目標「Nightly」實際構建測試

什麼我迄今所做的:

add_custom_target(buildtests) 
    add_custom_target(check COMMAND "ctest") 
    add_dependencies(check buildtests) 
    add_dependencies(Nightly buildtests) 

    add_dependencies(buildtests Test1) 
    ... 
    add_dependencies(buildtests TestN) 

現在「做檢查」構建一個運行測試,而是「使夜間」

  • 構建測試
  • 更新回購到CTEST_NIGHTLY_START_TIME
  • 構建所有其他目標
  • 運行(現已過時)測試

回答

1

如果你看的輸出,

cmake --help-command add_custom_target

它提到了所有的說法,「如果指定了ALL選項表示,這個目標應該被添加到默認的構建目標,使其將每次運行「。您需要將此參數添加到自定義目標,Nightly目標運行一個make來構建默認構建目標中的所有內容。所以下面應該這樣做,

add_custom_target(buildtests)

您的其他選擇是編寫自定義腳本CTEST,它給你項目的構建和測試的更精細的細粒度控制。

+0

您的權利,它實際上是我自己的錯誤: add_subdirectory(test EXCLUDE_FROM_ALL) 解決的辦法是將其改爲 如果(LEAVE_TEST_IN_ALL_TARGET) add_subdirectory(測試) 否則() add_subdirectory(測試EXCLUDE_FROM_ALL) ENDIF() ,然後調用 cmake的$ {SRC_DIR} -DLEAVE_TEST_IN_ALL_TARGET = ON每晚做 – bgp2000 2010-08-18 17:35:52

1

你說得對,它實際上是我自己的錯致電:

add_subdirectory(test EXCLUDE_FROM_ALL) 

的解決方案是將其更改爲

if(LEAVE_TEST_IN_ALL_TARGET) 
    add_subdirectory(test) 
else() 
    add_subdirectory(test EXCLUDE_FROM_ALL) 
endif() 

,然後調用

cmake ${SRC_DIR} -DLEAVE_TEST_IN_ALL_TARGET=ON make Nightly 
相關問題