Как заставить CMake перезапускаться с нуля без удаления и повторного создания директории сборки - PullRequest
0 голосов
/ 23 января 2020

Есть ли способ заставить CMake делать distclean?

Например, я создаю каталог сборки и запускаю там cmake. Затем я внесу изменения в CMakeLists.txt и перезапущу CMake. Неясно, вызывает ли это использование моих изменений или CMake просто берет ответы из кэша.

Поэтому я удаляю каталог сборки, воссоздаю его, а затем снова запускаю cmake.

Есть ли способ выполнить sh это в CMake, не удаляя каталог сборки? Есть ли эквивалентная цель стандартной стандартной цели?

1 Ответ

1 голос
/ 23 января 2020

Это то, для чего предопределенная цель CMake ZERO_CHECK. Это цель регенерации системы сборки. Когда вы компилируете один из своих ранее существующих проектов CMake, цель ZERO_CHECK всегда должна запускаться первой, чтобы проверить, изменились ли любые ваших файлов CMake с момента последней сборки. Если это так, CMake перезапустит и обновит систему сборки, используя ваши последние файлы CMake.

Вам просто нужно быть осторожным с кэшированными переменными. Они выглядят примерно так в коде и обычно отображаются на дисплее CMake GUI для удобного редактирования:

set(MY_VAR "ExampleString" CACHE STRING "My string variable")

Документация гласит:

Поскольку записи в кэше предназначены для предоставления настраиваемых пользователем значений это не перезаписывает существующие записи кэша по умолчанию. Используйте опцию FORCE для перезаписи существующих записей.

Кэшированные переменные сохранят их исходное значение, если вы явно не измените или не сбросите их, добавив атрибут FORCE в Команда set() выше, с использованием команды unset() или удаление их из кэша. Таким образом, изменение строки MY_VAR на что-то другое в коде:

set(MY_VAR "OtherString" CACHE STRING "My string variable")

не изменит значения переменной, поскольку исходная строка кэшируется . Вы можете удалить переменную из кэша (или изменить кэшированное значение) из окна CMake GUI или вручную изменив файл CMakeCache.txt в папке сборки CMake.


Если вы ищете способ быстрого удаления и повторного создания каталога сборки, простое удаление файла CMakeCache.txt в папке сборки должно обеспечить тот же эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...