2011-06-06 16 views
5

Me preguntaba si hay alguna forma de evitar que make clean en cmake vuelva a generar dependencias externas. Estoy usando ExternalProject para construir librerías C++ de terceros, y no tienen que ser reconstruidas aunque lo haga make clean.cmake - evitando que `make clean` limpie ExternalProject

Por otro lado, podría querer crear una nueva regla, por ejemplo, make really-clean, que incluso borre las dependencias. ¿Existe una forma correcta de hacer esto?

Gracias.

Respuesta

4

Supongo que utiliza ADD_CUSTOM_COMMAND o ADD_LIBRARY u otro ADD_ * para crear los archivos de dependencia.

Si su ExternalProject tiene su propio directorio y se puede poner CMakeLists.txt en ese directorio, se puede poner fácil siguiente en que CMakeLists.txt:

SET_DIRECTORY_PROPERTIES(PROPERTIES CLEAN_NO_CUSTOM 1) 

Así que los archivos de dependencia no conseguirá limpiado.

Si no es así, puede que necesite evitar poner las dependencias externas como archivos de salida. Por ejemplo, si se utiliza

ADD_CUSTOM_COMMAND(OUTPUT libdep 
    COMMAND dep_gen_cmd 
    .... 
) 

ADD_CUSTOM_COMMAND(OUTPUT prj 
    .... 
    DEPENDS libdep 
) 

entonces usted necesita para cambiarlo a:

ADD_CUSTOM_TARGET(libdep_gen 
     COMMAND dep_gen_cmd 
     ... 
) 

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