После некоторых исследований я попробовал много разных подходов, но не до конца их понимаю. Я думал, что следующий код должен работать, но это не так. Он записан в файле CMakeLists.txt, который является частью многих каскадных файлов CMakeLists.txt.
Код: Выделить всё
[...]
add_library(${PROJECT_NAME} STATIC
src/software_version.cpp [...]
)
[...]
set(VERSION_FILE "src/software_version.cpp")
add_custom_target(build_software_version ALL COMMAND ${CMAKE_COMMAND} -E touch ${VERSION_FILE})
#or
add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E touch ${VERSION_FILE})
Я использую предопределенную __ DATE__ в методе этого файла и обнаружил, что он не будет актуальным, если я не буду создавать файл каждый раз. Если я просто внесу небольшое изменение в файл, чтобы файл снова собирался, дата будет правильной. Я надеялся добиться этого с помощью команды touch.
Поэтому я ожидал увидеть в журнале сборки запись о том, что файл был построен. (Там каждый раз появляется еще один файл)
На этом этапе первая команда компилируется, но ничего не меняет. Второй выдает ошибку во время сборки.
[ошибка]: https://i.sstatic.net/W5Cle.png
Подробнее здесь: https://stackoverflow.com/questions/772 ... with-cmake
Мобильная версия