2018年7月7日 星期六

[Software Engineering] use CMake to add version


  • Problem: 如何在軟體中加入版號?
  • How:
    • 工具: CMake (跨平台的 configuration tool, 可建立各平台的 build solution/project file)
    • 流程:
      • 在 project setting 檔案 (CMakeLists.txt) 內加入版號
      • set (APP_VERSION_MAJOR 1)
        set (APP_VERSION_MINOR 0)
        
      • 在 source code 中新增特定的預設 config.h.in 檔 (config.h 會是 build config.h.in 後的產物)
      • // the configured options and settings for App 
        #define APP_VERSION_MAJOR @APP_VERSION_MAJOR@
        #define APP_VERSION_MINOR @APP_VERSION_MAJOR@
        
      • CMakeLists.txt 中指定此 config.h 檔及預設的 config.h.in參考檔
      • configure_file (
            "${PROJECT_SOURCE_DIR}/config.h.in"
            "${PROJECT_BINARY_DIR}/config.h"
        ))
      • 如此就可以在 source code 中, include config.h 並使用 APP_VERSION_MAJOR, APP_VERSION_MINOR
      • 另外, 若 build成 shared binary 的話, 也可以像 linux一樣設計成 app_3.1.2 這樣的 binary, 然後 app為 symbolic link to app_3.1.2
        • CMakeLists.txt 中加入 target property VERSION 與 SONAME
        • set(APP_VERSION_STRING ${APP_VERSION_MAJOR}.${APP_VERSION_MINOR}.${APP_VERSION_PATCH})
          
          set_target_properties(App PROPERTIES 
              VERSION ${APP_VERSION_STRING} 
              SOVERSION ${APP_VERSION_MAJOR}
          )
          
  • Reference: CMake tutorial

沒有留言:

張貼留言