Можно ли создать скрипт cmake, который генерирует сборку, которая обрабатывает неизвестные файлы, созданные во время сборки? - PullRequest
1 голос
/ 04 февраля 2012

У меня есть система, которая генерирует сгенерированный код из спецификации документа, который может измениться в любое время. Таким образом, список генерируемых файлов не может быть статическим и должен обрабатываться динамически во время сборки.

Из того, что я могу сказать, типичный CMakeLists.txt настроен для определения правила для каждого файла во время генерации cmake.

Есть ли способ заставить CMake написать общие правила, чтобы цели могли быть установлены во время сборки?

Если нет, каковы возможные обходные пути?

1 Ответ

1 голос
/ 04 февраля 2012

Сначала вы можете поместить процесс генерации кода в CMakeLists.txt в форме цели (add_custom_command), а затем сделать свою цель зависимой от этой команды. Это были шаги генерации кода, которые будут выполняться каждый раз, когда вы выдаете make.

В качестве альтернативы вот хак:

add_custom_target(cmake_regen ALL
    COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/CMakeFiles/Makefile.cmake)

И менее хакерский вариант, который должен сохранить уже построенные цели:

add_custom_target(cmake_regen ALL
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target rebuild_cache)

Добавление такого кода в CMakeLists.txt заставляет CMake регенерировать make-файлы при каждом запуске без запуска процесса полной настройки.

...