MetaFusion/scripts/dnacalib/CMakeModulesExtra/version/VersionInfo.cmake
2025-02-09 21:35:41 +08:00

51 lines
1.6 KiB
CMake

# Generate a Version.rc file populated with the supplied values and add the
# generated file to the target's list of sources
#
# Usage:
# include(VersionInfo)
# add_version_info(
# target_name
# NAME "Product name"
# FILENAME "SomeFile.dll"
# MAJOR_VERSION 1
# MINOR_VERSION 0
# PATCH_VERSION 3
# COMPANY_NAME "Some Company"
# COPYRIGHT "Copyright notice")
#
# Module dependencies:
# CMakeParseArguments
set(VERSION_INFO_SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR})
function(add_version_info target_name)
set(options)
set(one_value_args NAME
FILENAME
MAJOR_VERSION
MINOR_VERSION
PATCH_VERSION
COMPANY_NAME
COPYRIGHT)
set(multi_value_args)
cmake_parse_arguments(VI "${options}" "${one_value_args}" "${multi_value_args}" ${ARGN})
get_target_property(TARGET_TYPE ${target_name} TYPE)
if(TARGET_TYPE STREQUAL EXECUTABLE)
set(VI_TARGET_TYPE 0)
elseif(TARGET_TYPE STREQUAL SHARED_LIBRARY)
set(VI_TARGET_TYPE 1)
elseif(TARGET_TYPE STREQUAL STATIC_LIBRARY)
set(VI_TARGET_TYPE 2)
else()
set(VI_TARGET_TYPE 3)
endif()
get_target_property(TARGET_BINARY_DIR ${target_name} BINARY_DIR)
set(version_output_name "${TARGET_BINARY_DIR}/Version.rc")
configure_file("${VERSION_INFO_SOURCE_DIR}/Version.rc.in"
${version_output_name}
@ONLY)
target_sources(${target_name} PRIVATE ${version_output_name})
endfunction()