2011-06-06 34 views
5

我想知道是否有某種方法可以防止cmake中的make clean重新構建外部依賴關係。我使用ExternalProject來構建第三方C++庫,即使我做了make clean也不需要重建它們。cmake - 防止`清理`清洗ExternalProject

另一方面,我可能想創建一個新規則,例如make really-clean,它甚至可以清除依賴關係。有沒有一個很好的方法來做到這一點?

謝謝。

回答

4

我假設您使用ADD_CUSTOM_COMMAND或ADD_LIBRARY或其他ADD_ *來創建依賴文件。

如果您ExternalProject有它自己的目錄,你可以把CMakeLists.txt在該目錄中,你可以很容易把以下在CMakeLists.txt

SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1) 

因此,那些依賴文件將不會得到清理。

如果不是,您可能需要避免將外部依賴項作爲輸出文件。 例如,如果您使用

ADD_CUSTOM_COMMAND(OUTPUT libdep 
    COMMAND dep_gen_cmd 
    .... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    .... 
    DEPENDS libdep 
) 

,那麼你需要將其更改爲:

ADD_CUSTOM_TARGET(libdep_gen 
     COMMAND dep_gen_cmd 
     ... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    COMMAND test -e libdep || make libdep_gen 
    ... 
)