#[=======================================================================[.rst: myx_generate_git_info_header ---------------------------------- Вспомогательная функция для автоматической генерации заголовочного файла, содержащего информацию о текущем состоянии репозитория git:: myx_generate_git_info_header(TARGET BASE_FILENAME [ PREFIX prefix ] ) Обязательные параметры: `TARGET` - имя цели, с которой связан заголовочный файл, и `BASE_FILENAME` - имя генерируемого заголовочного файла. Дополнительный аргумент `PREFIX` добавляет префикс к генерируемым именам переменных. #]=======================================================================] include_guard(GLOBAL) function(myx_generate_git_info_header target base_filename) set(options) set(oneValueArgs PREFIX) set(multiValueArgs) cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(filename "${PROJECT_BINARY_DIR}/include/${base_filename}") set(PREFIX "") if(ARG_PREFIX) string(APPEND ARG_PREFIX "_") string(REPLACE "-" "_" PREFIX ${ARG_PREFIX}) endif() # cmake-format: off if(NOT TARGET ${target}-git-info-header) add_custom_target(${target}-git-info-header ALL ${CMAKE_COMMAND} -DGIT_INFO_FILE=${filename} -DPREFIX=${PREFIX} -P ${MYX_CMAKE_LIB_DIR}/generators/GitInfo.cmake BYPRODUCTS ${filename} WORKING_DIRECTORY ${MYX_CMAKE_LIB_DIR}/generators) endif() # cmake-format: on set_property(TARGET ${target} APPEND PROPERTY PRIVATE_HEADER_FILES ${filename}) target_sources(${target} PRIVATE ${filename}) endfunction()