Создавайте файл cpp каждый раз с помощью cmake ⇐ C++
-
Гость
Создавайте файл cpp каждый раз с помощью cmake
Я хочу, чтобы файл, содержащий дату сборки, создавался каждый раз.
После некоторых исследований я попробовал много разных подходов, но не до конца их понимаю. Я думал, что следующий код должен работать, но это не так. Он записан в файле CMakeLists.txt, который является частью многих каскадных файлов CMakeLists.txt.
[...] add_library(${PROJECT_NAME} СТАТИЧЕСКИЙ src/software_version.cpp [...] ) [...] set(VERSION_FILE "src/software_version.cpp") add_custom_target(build_software_version ВСЕ КОМАНДА ${CMAKE_COMMAND} -E коснитесь ${VERSION_FILE}) #или add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E touch ${VERSION_FILE}) Изменить:
Я использую предопределенный __ DATE__ в методе этого файла и обнаружил, что он не будет актуальным, если я не буду создавать файл каждый раз. Если я просто внесу небольшое изменение в файл, чтобы файл снова собирался, дата будет правильной. Я надеялся добиться этого с помощью команды touch. Поэтому я ожидал увидеть в журнале сборки запись о том, что файл был собран. (Там каждый раз появляется еще один файл)
На этом этапе первая команда компилируется, но ничего не меняет. Второй выдает ошибку во время сборки. [ошибка]: https://i.stack.imgur.com/W5Cle.png
Я хочу, чтобы файл, содержащий дату сборки, создавался каждый раз.
После некоторых исследований я попробовал много разных подходов, но не до конца их понимаю. Я думал, что следующий код должен работать, но это не так. Он записан в файле CMakeLists.txt, который является частью многих каскадных файлов CMakeLists.txt.
[...] add_library(${PROJECT_NAME} СТАТИЧЕСКИЙ src/software_version.cpp [...] ) [...] set(VERSION_FILE "src/software_version.cpp") add_custom_target(build_software_version ВСЕ КОМАНДА ${CMAKE_COMMAND} -E коснитесь ${VERSION_FILE}) #или add_custom_command(TARGET ${PROJECT_NAME} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E touch ${VERSION_FILE}) Изменить:
Я использую предопределенный __ DATE__ в методе этого файла и обнаружил, что он не будет актуальным, если я не буду создавать файл каждый раз. Если я просто внесу небольшое изменение в файл, чтобы файл снова собирался, дата будет правильной. Я надеялся добиться этого с помощью команды touch. Поэтому я ожидал увидеть в журнале сборки запись о том, что файл был собран. (Там каждый раз появляется еще один файл)
На этом этапе первая команда компилируется, но ничего не меняет. Второй выдает ошибку во время сборки. [ошибка]: https://i.stack.imgur.com/W5Cle.png
Мобильная версия