From 3228a31db5c7d0a180a9e51c9046923e678105f3 Mon Sep 17 00:00:00 2001 From: Pierre Aubert <aubertp7@gmail.com> Date: Tue, 16 Feb 2021 09:58:01 +0100 Subject: [PATCH] Add version generator --- cmake/create_version.cmake | 45 ++++++++++++++++++++++++++++++++ cmake/phoenix_base_project.cmake | 2 ++ 2 files changed, 47 insertions(+) create mode 100644 cmake/create_version.cmake diff --git a/cmake/create_version.cmake b/cmake/create_version.cmake new file mode 100644 index 0000000..8984a27 --- /dev/null +++ b/cmake/create_version.cmake @@ -0,0 +1,45 @@ + +# Create the version header of the given program +# projectName : name of the project +# projectVersion : version of the project +function(create_version projectName projectVersion) + message(STATUS "Program ${projectName} version ${projectVersion}") + string(REPLACE "." ";" VERSION_STR_LIST ${projectVersion}) + + set(VERSION_LIST ${VERSION_STR_LIST}) + list(LENGTH VERSION_LIST listLength) + + list(GET VERSION_LIST 0 MAJOR_PROG_VERSION) + list(GET VERSION_LIST 1 MINOR_PROG_VERSION) + list(GET VERSION_LIST 2 PATCH_PROG_VERSION) + + string(TOUPPER ${projectName} PROGRAM_UPPER_NAME) + string(TOLOWER ${projectName} PROGRAM_LOWER_NAME) + set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROGRAM_LOWER_NAME}_version.h) + + set(DEFINE_MACRO_HEADER "__${PROGRAM_UPPER_NAME}_VERSION_H__") + file(WRITE ${OUTPUT_FILE} "\n") + file(APPEND ${OUTPUT_FILE} "/***************************************\n") + file(APPEND ${OUTPUT_FILE} " Auteur : Pierre Aubert\n") + file(APPEND ${OUTPUT_FILE} " Mail : aubertp7@gmail.com\n") + file(APPEND ${OUTPUT_FILE} " Licence : CeCILL-C\n") + file(APPEND ${OUTPUT_FILE} "****************************************/\n") + file(APPEND ${OUTPUT_FILE} "\n") + file(APPEND ${OUTPUT_FILE} "#ifndef ${DEFINE_MACRO_HEADER}\n") + file(APPEND ${OUTPUT_FILE} "#define ${DEFINE_MACRO_HEADER}\n\n") + + file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION_MAJOR ${MAJOR_PROG_VERSION}\n") + file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION_MINOR ${MINOR_PROG_VERSION}\n") + file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION_PATCH ${PATCH_PROG_VERSION}\n\n") + + file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_MAKE_VERSION(major, minor, patch) ((major) *10000 + (minor) *100 + (patch))\n\n") + file(APPEND ${OUTPUT_FILE} "#define ${PROGRAM_UPPER_NAME}_VERSION ${PROGRAM_UPPER_NAME}_MAKE_VERSION (${PROGRAM_UPPER_NAME}_VERSION_MAJOR, ${PROGRAM_UPPER_NAME}_VERSION_MINOR, ${PROGRAM_UPPER_NAME}_VERSION_PATCH)\n\n") + + file(APPEND ${OUTPUT_FILE} "#endif\n\n") + + install(FILES ${OUTPUT_FILE} DESTINATION include/${projectName}) +endfunction(create_version) + + + + diff --git a/cmake/phoenix_base_project.cmake b/cmake/phoenix_base_project.cmake index 23917ee..f67bcc6 100644 --- a/cmake/phoenix_base_project.cmake +++ b/cmake/phoenix_base_project.cmake @@ -1,4 +1,5 @@ +include(create_version.cmake) # Define the base of a Phoenix project # programName : name of the program/library @@ -6,6 +7,7 @@ # programDescritpion : description of the program/library # programHomePage : home page of the program/library function(phoenix_base_project programName programVersion programDescritpion programHomePage) + create_version("${programName}" "${programVersion}") if(NOT MODULE_MODE) set(PROGRAM_NAME "${programName}" CACHE STRING "name of the current project" FORCE) set(PROGRAM_VERSION "${programVersion}" CACHE STRING "version of the current project" FORCE) -- GitLab