2011-06-06 13 views
5

Zastanawiam się, czy istnieje sposób, aby uniemożliwić make clean w cmake od odbudowy zewnętrznych zależności. Używam ExternalProject do budowania bibliotek C++ innych firm i nie trzeba ich przebudowywać, nawet jeśli wykonam make clean.cmake - zapobieganie "make clean" przed czyszczeniem ExternalProject

Z drugiej strony mogę utworzyć nową regułę, powiedzmy, make really-clean, która nawet usuwa zależności. czy jest na to dobry sposób?

Dzięki.

Odpowiedz

4

Zakładam, że używasz ADD_CUSTOM_COMMAND lub ADD_LIBRARY lub innego ADD_ * do tworzenia plików zależności.

Jeśli ExternalProject ma swój własny katalog i można umieścić CMakeLists.txt w tym katalogu, można łatwo umieścić w tym CMakeLists.txt następujący:

SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1) 

Więc te pliki z zależnościami nie zostaną oczyszczone.

Jeśli nie, może być konieczne pominięcie zewnętrznych zależności jako plików wyjściowych. Na przykład, jeśli używasz

ADD_CUSTOM_COMMAND(OUTPUT libdep 
    COMMAND dep_gen_cmd 
    .... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    .... 
    DEPENDS libdep 
) 

to trzeba go zmienić na:

ADD_CUSTOM_TARGET(libdep_gen 
     COMMAND dep_gen_cmd 
     ... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    COMMAND test -e libdep || make libdep_gen 
    ... 
) 
Powiązane problemy