myx/MyxCMake/lib/generators/PrivateConfigHeader.cmake

41 lines
1.7 KiB
CMake
Raw Normal View History

2022-10-03 12:06:53 +00:00
#[=======================================================================[.rst:
myx_generate_private_config_header
----------------------------------
Вспомогательная функция для автоматической генерации заголовочного
файла, содержащего информацию о проекте::
2022-10-15 07:14:08 +00:00
myx_generate_private_config_header(TARGET_NAME BASE_FILENAME)
2022-10-03 12:06:53 +00:00
2022-10-15 07:14:08 +00:00
Обязательные параметры: `TARGET_NAME` - имя цели, с которой связан
заголовочный файл, и `BASE_FILENAME` - имя генерируемого заголовочного файла.
2022-10-03 12:06:53 +00:00
#]=======================================================================]
include_guard(GLOBAL)
2022-10-06 08:10:43 +00:00
if(${CMAKE_VERSION} VERSION_LESS "3.17.0")
set(MYX_CMAKE_LIB_GENERATORS_DIR_BACKPORT "${CMAKE_CURRENT_LIST_DIR}")
endif()
2022-10-15 07:14:08 +00:00
function(myx_generate_private_config_header TARGET_NAME BASE_FILENAME)
2022-10-06 08:10:43 +00:00
if(${CMAKE_VERSION} VERSION_LESS "3.17.0")
set(CMAKE_CURRENT_FUNCTION_LIST_DIR ${MYX_CMAKE_LIB_GENERATORS_DIR_BACKPORT})
endif()
2022-10-03 12:06:53 +00:00
set(BUILD_DATE ${MYX_TODAY})
myx_project_version_int()
get_property(PROJECT_VERSION_INT GLOBAL PROPERTY PROJECT_VERSION_INT)
2022-10-15 07:14:08 +00:00
set(__filename "${PROJECT_BINARY_DIR}/include/${BASE_FILENAME}")
configure_file("${CMAKE_CURRENT_FUNCTION_LIST_DIR}/PrivateConfig.hpp.in" ${__filename})
2022-10-03 12:06:53 +00:00
2022-10-15 07:14:08 +00:00
set_property(TARGET ${TARGET_NAME} APPEND PROPERTY PRIVATE_HEADER_FILES ${__filename})
get_target_property(__target_type ${TARGET_NAME} TYPE)
if(${__target_type} STREQUAL "INTERFACE_LIBRARY")
target_sources(${TARGET_NAME} INTERFACE ${__filename})
else()
target_sources(${TARGET_NAME} PRIVATE ${__filename})
endif()
2022-10-03 12:06:53 +00:00
endfunction()