#build #makefile #cmake
#строить #makefile создать файл #cmake #сборка #makefile
Вопрос:
Мне было интересно, есть ли какой-нибудь способ предотвратить make clean
повторное создание внешних зависимостей в cmake. Я использую ExternalProject
для создания сторонних библиотек c , и их не нужно перестраивать, даже если я это сделаю make clean
.
С другой стороны, я мог бы захотеть создать новое правило, скажем, make really-clean
, которое даже очищает зависимости. есть ли хороший способ сделать это?
Спасибо.
Ответ №1:
Я предполагаю, что вы используете 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
...
)