Как сбросить свойство CMake? - PullRequest
0 голосов
/ 01 июля 2019

Сводка

Я бы хотел, чтобы (булево) свойство не устанавливалось в CMake таким образом, чтобы get_property(... SET) возвращало 0, хотя свойство было установлено в первую очередь.Для свойства 0, FALSE или OFF недостаточно.Как этого добиться?

Фон

У меня есть несколько пользовательских команд, которые генерируют некоторые исходные файлы.CMake автоматически присваивает им свойство исходного файла GENERATED.Кажется, это заставляет генератор GNU Makefile добавить правило для удаления этих файлов с помощью make clean.

Однако я не хочу, чтобы эти файлы очищались, потому что, как только они существуют, пользователь может их редактировать.Пользовательская команда должна убедиться, что они генерируются, только если они не существуют.Генерировать их во время настройки с помощью execute_process вместо пользовательской команды невозможно.

Установка GENERATED в 0, FALSE или OFF не исключает источники из чистой.

Версии

  • ОС: Ubuntu 16.04
  • CMake: 3.5.1 (из репозитория Ubuntu 16.04)

Я сейчас нахожусьесли возможно, следует избегать привязки к Ubuntu 16.04 и заставить всех пользователей использовать более свежую версию CMake.

1 Ответ

1 голос
/ 01 июля 2019

Вам нужно установить ничто :

# test unsetting a property
set_property(TARGET Properties PROPERTY TARGETTEST)
get_property(TARGETRESULT TARGET Properties PROPERTY TARGETTEST SET)
if (TARGETRESULT)
    message(SEND_ERROR "Error: target prop not unset, "
            "result is TARGETRESULT=${TARGETRESULT}")
endif ()

(от https://github.com/Kitware/CMake/blob/master/Tests/Properties/CMakeLists.txt)

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