Условия CMake: сравнение временных меток файлов - PullRequest
5 голосов
/ 17 октября 2011

Мне нужно написать пользовательскую команду, которая запускается всякий раз, когда файл A новее, чем файл B. Как мне сделать это в CMake?Спасибо!

1 Ответ

6 голосов
/ 18 октября 2011

Похоже, вы хотите что-то похожее на это:

add_custom_command(OUTPUT B
  COMMAND ${CMAKE_COMMAND} -Dinput=A -P script_that_generates_B.cmake
  DEPENDS A
  )

Где «B» - полный путь к выходному файлу, «A» - полный путь к какому-либо входному файлу, а команда - это то, что запускается во время сборки, чтобы генерировать B при каждом изменении A.

Чтобы правило, создающее B, выполнялось во время сборки, что-то еще должно зависеть и от B. Он должен отображаться либо в ЗАВИСИМОСТИ от add_custom_target, который находится в «all», либо в виде исходного файла для команды add_library или add_executable, чтобы запустить команду.

EDIT:

Вы также можете использовать

if(file1 IS_NEWER_THAN file2)

построить во время настройки CMake, если необходимо. Документация по команде IF довольно длинная, но поиск на этой странице для IS_NEWER_THAN дает этот слепок:

"Истинно, если file1 новее, чем file2 или если один из двух файлов не существует. Поведение четко определено только для полных путей."

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