2011-11-10 94 views
4

我已經在cmake中定義了一個自定義目標。我現在要確保只有在執行cmake目標test時才構建此目標。我怎樣才能做到這一點。如何在cmake目標中添加依賴關係

可以說我有一個目標make coverage,它應該取決於之前調用的目標make test或在執行前調用make test

如何在cmake中定義此行爲?

在這裏我的代碼沒有按預期工作。我想達到這一點,使得覆蓋範圍取決於以前是否需要調用測試。

ADD_CUSTOM_TARGET(
     coverage COMMAND /bin/bash ${LIBPIPE_BINARY_DIR}/cmake/scripts/coverage.sh 
     DEPENDS test 
    ) 
+0

什麼是測試?一個custom_command或custom_target? – arrowd

+0

測試是一個custom_target – tune2fs

+0

奇怪。自定義目標始終過時,因此如果您運行覆蓋範圍,它應該先運行測試。 – arrowd

回答

3

CMake FAQ狀態的add_custom_command/add_custom_target命令,定義自定義目標,有A依賴參數。

+0

我看到了這個,但不幸的是它不適合我。我添加了一些我以上試過的代碼。 – tune2fs

+0

在這裏可能對你有用的相似主題http://stackoverflow.com/questions/733475/cmake-ctest-make-test-doesnt-build-tests –

6

您不能添加「DEPENDS測試」子句。 CMake中的預定義/內置目標(all,install,package,test,clean)不可用作CMakeLists.txt文件中的實際目標。所以你不能表達對內置目標的依賴。

CMake錯誤跟蹤器中有一項針對此功能的出色功能請求,但尚未實現。請參閱http://public.kitware.com/Bug/view.php?id=8438

但是,您可以更改自定義目標的命令,但它會首先調用「make test」,然後運行覆蓋命令。