cmake - предотвращает `make clean` от очистки ExternalProject - PullRequest
5 голосов
/ 07 июня 2011

Мне было интересно, есть ли какой-нибудь способ запретить make clean в cmake перестраивать внешние зависимости. Я использую ExternalProject для создания сторонних библиотек c ++, и их не нужно перестраивать, даже если я делаю make clean.

С другой стороны, я мог бы захотеть создать новое правило, скажем, make really-clean, которое даже очищает зависимости. Есть ли хороший способ сделать это?

Спасибо.

1 Ответ

4 голосов
/ 21 июля 2012

Я предполагаю, что вы используете 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
     ...
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...