| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 | 
							- cmake_minimum_required(VERSION 3.0.0)
 
- # function(add_deb_package PACKAGE_NAME PACKAGE_VERSION PACKAGE_MAINTAINER PACKAGE_EMAIL PACKAGE_SHORT_DESCRIPTION PACKAGE_LONG_DESCRIPTION)
 
- # endfunction(add_deb_package PACKAGE_NAME PACKAGE_VERSION PACKAGE_MAINTAINER PACKAGE_EMAIL PACKAGE_SHORT_DESCRIPTION PACKAGE_LONG_DESCRIPTION)
 
- # if(add_deb_package    VALUE) set(Package    ${VALUE} PARENT_SCOPE) endif(add_deb_package    VALUE)
 
- # if(add_deb_version    VALUE) set(Version    ${VALUE} PARENT_SCOPE) endif(add_deb_version    VALUE)
 
- # if(add_deb_maintainer VALUE) set(Maintainer ${VALUE} PARENT_SCOPE) endif(add_deb_maintainer VALUE)
 
- # if(add_deb_email      VALUE) set(Email      ${VALUE} PARENT_SCOPE) endif(add_deb_email      VALUE)
 
- # if(add_deb_descrition VALUE) set(Descrition ${VALUE} PARENT_SCOPE) endif(add_deb_descrition VALUE)
 
- # if(add_deb_detail     VALUE) set(Detail     ${VALUE} PARENT_SCOPE) endif(add_deb_detail     VALUE)
 
- # set(Package         "")
 
- # set(Version         "")
 
- # set(Architecture    "")
 
- # set(Maintainer      "")
 
- # set(Email           "")
 
- # set(Descrition      "")
 
- function(find_str _IN _SEP _OUT)
 
-     string(FIND "${_IN}" "${_SEP}" _TMP)
 
-     set(${_OUT} ${_TMP} PARENT_SCOPE)
 
- endfunction(find_str _IN _SEP _OUT)
 
- function(find_next _IN _OUT)
 
-     find_str("${_IN}" "\n" _TMP)
 
-     set(${_OUT} ${_TMP} PARENT_SCOPE)
 
- endfunction(find_next _IN _OUT)
 
- function(sub_next _IN _INDEX _OUT __OUT)
 
-     find_next(${_IN} _NEXTINDEX)
 
-     string(SUBSTRING "${_IN}" ${_INDEX} ${_NEXTINDEX} _TMP)
 
-     math(EXPR _NEXTINDEX ${_NEXTINDEX}+1)
 
-     string(SUBSTRING "${_IN}" ${_NEXTINDEX} -1 __TMP)
 
-     set(${_OUT} ${_TMP} PARENT_SCOPE)
 
-     set(${__OUT} ${__TMP} PARENT_SCOPE)
 
- endfunction(sub_next _IN _INDEX _OUT)
 
- function(trim_str _IN _OUT)
 
-     string(STRIP "${_IN}" _TMP)
 
-     set(${_OUT} ${_TMP} PARENT_SCOPE)
 
- endfunction(trim_str _IN _OUT)
 
- function(split_str _IN _SEP _OUT)
 
-     string(FIND "${_IN}" "${_SEP}" _TMP_INDEX)
 
-     if(NOT _TMP_INDEX EQUAL -1)
 
-         string(SUBSTRING "${_IN}" 0 ${_TMP_INDEX} _TMP)
 
-         math(EXPR _TMP_INDEX ${_TMP_INDEX}+1)
 
-         string(SUBSTRING "${_IN}" ${_TMP_INDEX} -1 __TMP)
 
-         set(${_OUT} "${_TMP};${__TMP}" PARENT_SCOPE)
 
-     else()
 
-         set(${_OUT} ${_IN} PARENT_SCOPE)
 
-     endif(NOT _TMP_INDEX EQUAL -1)
 
- endfunction(split_str _IN _SEP _OUT)
 
- function(split_str_p _IN _SEP _OUT __OUT)
 
-     split_str("${_IN}" "${_SEP}" _TMP)
 
-     list(GET _TMP 0 __TMP)
 
-     list(GET _TMP 1 ___TMP)
 
-     set(${_OUT} ${__TMP} PARENT_SCOPE)
 
-     set(${__OUT} ${___TMP} PARENT_SCOPE)
 
- endfunction(split_str_p _IN _SEP _OUT __OUT)
 
- function(split_str_n _IN _SEP _OUT _N)
 
-     if(_N GREATER 1)
 
-         set(_C ${_N})
 
-         set(_RET "")
 
-         set(_NEXT ${_IN})
 
-         while(NOT _C EQUAL 0)
 
-             split_str("${_NEXT}" "${_SEP}" _TMP)
 
-             list(LENGTH _TMP _TMP_LEN)
 
-             if(_TMP_LEN EQUAL 2)
 
-                 list(GET _TMP 0 __TMP)
 
-                 list(GET _TMP 1 _NEXT)
 
-                 list(APPEND _RET ${__TMP})
 
-             else()
 
-                 break()
 
-             endif(_TMP_LEN EQUAL 2)
 
-             math(EXPR _C "${_C}-1")
 
-         endwhile(NOT _C EQUAL 0)
 
-         list(APPEND _RET ${_NEXT})
 
-         set(${_OUT} ${_RET} PARENT_SCOPE)
 
-     else()
 
-         split_str("${_IN}" "${_SEP}" _TMP)
 
-         set(${_OUT} ${_TMP} PARENT_SCOPE)
 
-     endif(_N GREATER 1)
 
- endfunction(split_str_n _IN _SEP _OUT _N)
 
- function(set_package_vars _IN_KEY _IN_VAL)
 
-     # trim_str("${_IN_KEY}" _IN_KEY)
 
-     find_str("${_IN_KEY}" "Type" _Type)
 
-     if(_Type EQUAL "0")
 
-         string(TOUPPER "${_IN_VAL}" _IN_VAL_UPPER)
 
-         string(TOLOWER "${_IN_VAL}" _IN_VAL_LOWER)
 
-         set(CPACK_GENERATOR "${_IN_VAL_UPPER}" PARENT_SCOPE)
 
-         message("--> 软件包类型: ${_IN_VAL_LOWER}")
 
-     endif(_Type EQUAL "0")
 
-     find_str("${_IN_KEY}" "Package" _Package)
 
-     if(_Package EQUAL "0")
 
-         if(_IN_VAL STREQUAL "auto")
 
-             set(CPACK_DEBIAN_PACKAGE_NAME "${PROJECT_NAME}" PARENT_SCOPE)
 
-         else()
 
-             set(CPACK_DEBIAN_PACKAGE_NAME "${_IN_VAL}" PARENT_SCOPE)
 
-         endif(_IN_VAL STREQUAL "auto")
 
-         message("--> 软件包名: ${_IN_VAL}")
 
-     endif(_Package EQUAL "0")
 
-     find_str("${_IN_KEY}" "Version" _Version)
 
-     if(_Version EQUAL "0")
 
-         if(_IN_VAL STREQUAL "auto")
 
-             set(CPACK_DEBIAN_PACKAGE_VERSION "${PROJECT_VERSION}" PARENT_SCOPE)
 
-         else()
 
-             set(CPACK_DEBIAN_PACKAGE_VERSION "${_IN_VAL}" PARENT_SCOPE)
 
-         endif(_IN_VAL STREQUAL "auto")
 
-         message("--> 软件版本: ${_IN_VAL}")
 
-     endif(_Version EQUAL "0")
 
-     find_str("${_IN_KEY}" "CalVer" _CalVer)
 
-     if(_CalVer EQUAL "0")
 
-         set(CalVer "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 日历化版本: ${_IN_VAL}")
 
-     endif(_CalVer EQUAL "0")
 
-     find_str("${_IN_KEY}" "OSD" _OSDVer)
 
-     if(_OSDVer EQUAL "0")
 
-         set(OSDVer "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 声明发行版号: ${_IN_VAL}")
 
-     endif(_OSDVer EQUAL "0")
 
-     find_str("${_IN_KEY}" "Architecture" _Architecture)
 
-     if(_Architecture EQUAL "0")
 
-         set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${_IN_VAL}" PARENT_SCOPE)
 
-         if(_IN_VAL STREQUAL "auto")
 
-             execute_process(
 
-                 COMMAND dpkg --print-architecture
 
-                 OUTPUT_VARIABLE _RETV
 
-                 OUTPUT_STRIP_TRAILING_WHITESPACE
 
-             )
 
-             set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${_RETV}" PARENT_SCOPE)
 
-         endif(_IN_VAL STREQUAL "auto")
 
-         message("--> 软件架构: ${_IN_VAL}")
 
-     endif(_Architecture EQUAL "0")
 
-     find_str("${_IN_KEY}" "Priority" _Priority)
 
-     if(_Priority EQUAL "0")
 
-         set(CPACK_DEBIAN_PACKAGE_PRIORITY "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 优先级: ${_IN_VAL}")
 
-     endif(_Priority EQUAL "0")
 
-     find_str("${_IN_KEY}" "Depends" _Depends)
 
-     if(_Depends EQUAL "0")
 
-         set(CPACK_DEBIAN_PACKAGE_DEPENDS "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 软件依赖: ${_IN_VAL}")
 
-     endif(_Depends EQUAL "0")
 
-     find_str("${_IN_KEY}" "Maintainer" _Maintainer)
 
-     if(_Maintainer EQUAL "0")
 
-         set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 软件维护者: ${_IN_VAL}")
 
-     endif(_Maintainer EQUAL "0")
 
-     find_str("${_IN_KEY}" "Homepage" _Homepage)
 
-     if(_Homepage EQUAL "0")
 
-         set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 软件主页: ${_IN_VAL}")
 
-     endif(_Homepage EQUAL "0")
 
-     find_str("${_IN_KEY}" "Recommends" _Recommends)
 
-     if(_Recommends EQUAL "0")
 
-         set(CPACK_DEBIAN_PACKAGE_RECOMMENDS "${_IN_VAL}" PARENT_SCOPE)
 
-         message("--> 软件建议: ${_IN_VAL}")
 
-     endif(_Recommends EQUAL "0")
 
- endfunction(set_package_vars _IN_KEY _IN_VAL)
 
- # 定义一个自定义(add_package_descript)函数
 
- # 用于按特定配置约定自动化构建软件包配置
 
- function(add_package_descript IN_DES)
 
-     set(PACKAGE_DES_PATH "${IN_DES}")
 
-     if(EXISTS ${IN_DES})
 
-     elseif(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${IN_DES}")
 
-         set(PACKAGE_DES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/${IN_DES}")
 
-     else()
 
-         message(FATAL_ERROR "!! Not Found Path: ${PACKAGE_DES_PATH}")
 
-         return()
 
-     endif(EXISTS ${IN_DES})
 
-     file(READ ${PACKAGE_DES_PATH} DES_CONTENT)
 
-     trim_str("${DES_CONTENT}" DES_CONTENT)
 
-     ################## 解析 ##################
 
-     sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT)
 
-     set(PREV_DES "")
 
-     while(NOT DES_LINE STREQUAL "${PREV_DES}")
 
-         # 检查该描述行是否是 # 注释开头,是的话将跳过该行
 
-         find_str("${DES_LINE}" "#" _COMMENT)
 
-         if(_COMMENT EQUAL "0")
 
-             message("--> !!!!!!! ${DES_LINE}")
 
-             sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT)
 
-             continue()
 
-         endif(_COMMENT EQUAL "0")
 
-         # 检查该描述行是否是 Descrition 开头,是的话说明描述结尾了
 
-         find_str("${DES_LINE}" "Descrition" _DESCRIPTION)
 
-         if(_DESCRIPTION EQUAL "0")
 
-             break()
 
-         endif(_DESCRIPTION EQUAL "0")
 
-         split_str_n("${DES_LINE}" ":" _TMP 1)
 
-         list(LENGTH _TMP _TMP_LEN)
 
-         if(_TMP_LEN EQUAL 2)
 
-             split_str_p("${DES_LINE}" ":" _TMP __TMP)
 
-             trim_str("${__TMP}" __TMP)
 
-             string(LENGTH "${__TMP}" __TMP_LENGTH)
 
-             if(NOT __TMP_LENGTH EQUAL "0")
 
-                 set_package_vars("${_TMP}" "${__TMP}")
 
-             endif(NOT __TMP_LENGTH EQUAL "0")
 
-         endif(_TMP_LEN EQUAL 2)
 
-         # 记录当前行,获取下一行,可能是已经结尾了(将保持重复行)
 
-         set(PREV_DES "${DES_LINE}")
 
-         sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT)
 
-     endwhile(NOT DES_LINE STREQUAL "${PREV_DES}")
 
-     # 再一次检查该描述行是否是 Descrition 开头,是的话将进行分析描述行
 
-     find_str("${DES_LINE}" "Descrition" _DESCRIPTION)
 
-     if(_DESCRIPTION EQUAL "0")
 
-         split_str_p("${DES_LINE}" ":" _TMP __TMP)
 
-         trim_str("${__TMP}" __TMP)
 
-         set(Descrition ${__TMP})
 
-         set(PREV_DES_LINE "")
 
-         while(NOT PREV_DES_LINE STREQUAL DES_LINE)
 
-             if(NOT PREV_DES_LINE STREQUAL "")
 
-                 set(Descrition "${Descrition}\n${DES_LINE}")
 
-             endif(NOT PREV_DES_LINE STREQUAL "")
 
-             set(PREV_DES_LINE "${DES_LINE}")
 
-             sub_next(${DES_CONTENT} NEXT_INDEX DES_LINE DES_CONTENT)
 
-         endwhile(NOT PREV_DES_LINE STREQUAL DES_LINE)
 
-         # set(Descrition "${Descrition}")
 
-         message("--> 软件说明: ${Descrition}")
 
-         set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${Descrition})
 
-     endif(_DESCRIPTION EQUAL "0")
 
-     ##################### deb #####################
 
-     # ARCHITECTURE
 
-     if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
 
-         set(ARCHITECTURE "amd64")
 
-     elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64")
 
-         set(ARCHITECTURE "arm64")
 
-     endif()
 
-     #################### Calendar Version ###################
 
-     if("${CalVer}" STREQUAL "true")
 
-         string(TIMESTAMP BUILD_TIME "%Y%m%d")
 
-         set(CPACK_DEBIAN_PACKAGE_VERSION "${CPACK_DEBIAN_PACKAGE_VERSION}-${BUILD_TIME}")
 
-     endif("${CalVer}" STREQUAL "true")
 
-     ####################### OS Release ######################
 
-     if("${OSDVer}" STREQUAL "true")
 
-         exec_program(lsb_release ARGS -si
 
-             OUTPUT_VARIABLE _OSI
 
-         )
 
-         exec_program(lsb_release ARGS -sr
 
-             OUTPUT_VARIABLE _OSR
 
-         )
 
-         if(NOT "${_OSI}" STREQUAL "" AND NOT "${_OSR}" STREQUAL "")
 
-             set(PACKAGE_SUFFIX "${PACKAGE_SUFFIX}_${_OSI}${_OSR}")
 
-         endif(NOT "${_OSI}" STREQUAL "" AND NOT "${_OSR}" STREQUAL "")
 
-     endif("${OSDVer}" STREQUAL "true")
 
-     
 
-     ##################### deb file name #####################
 
-     set(_Package      "${CPACK_DEBIAN_PACKAGE_NAME}")
 
-     set(_Version      "${CPACK_DEBIAN_PACKAGE_VERSION}")
 
-     set(_Architecture "${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
 
-     set(_DebFileName
 
-         "${_Package}_${_Version}_${_Architecture}${PACKAGE_SUFFIX}.deb"
 
-     )
 
-     set(CPACK_DEBIAN_FILE_NAME            ${_DebFileName})
 
-     # set(CPACK_DEBIAN_PACKAGE_NAME         "${Package}")
 
-     # set(CPACK_DEBIAN_PACKAGE_VERSION      "${Version}")
 
-     # set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${Architecture}")
 
-     # set(CPACK_DEBIAN_PACKAGE_DEPENDS      "${Depends}")
 
-     # set(CPACK_DEBIAN_PACKAGE_PRIORITY     "${Priority}")
 
-     # set(CPACK_DEBIAN_PACKAGE_MAINTAINER   "${Maintainer}")
 
-     # set(CPACK_DEBIAN_PACKAGE_DESCRIPTION  "${Descrition}")
 
-     # 设置即将使用的标准脚本
 
-     # set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
 
-     #     "${CMAKE_SOURCE_DIR}/config/DEBIAN/preinst"
 
-     #     "${CMAKE_SOURCE_DIR}/config/DEBIAN/postinst"
 
-     #     "${CMAKE_SOURCE_DIR}/config/DEBIAN/prerm"
 
-     #     "${CMAKE_SOURCE_DIR}/config/DEBIAN/postrm"
 
-     # )
 
-     # 设置为ON,以便使用 dpkg-shlibdeps 生成更好的包依赖列表。
 
-     # set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
 
-     # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS ON)
 
-     # set(CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY "=")
 
-     include(CPack)
 
- endfunction(add_package_descript IN_DES)
 
- # TODO:
 
- # CPACK_GENERATOR
 
- # CPACK_DEBIAN_FILE_NAME                - n
 
- # CPACK_DEBIAN_PACKAGE_NAME             - y
 
- # CPACK_DEBIAN_PACKAGE_VERSION          - y
 
- # CPACK_DEBIAN_PACKAGE_ARCHITECTURE     - y(auto)
 
- # CPACK_DEBIAN_PACKAGE_DEPENDS          - y
 
- # CPACK_DEBIAN_PACKAGE_PRIORITY         - y
 
- # CPACK_DEBIAN_PACKAGE_MAINTAINER       - y
 
- # CPACK_DEBIAN_PACKAGE_DESCRIPTION      - y
 
- # ARCHITECTURE
 
- # if(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "x86_64")
 
- #     set(ARCHITECTURE "amd64")
 
- # elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} STREQUAL "aarch64")
 
- #     set(ARCHITECTURE "arm64")
 
- # endif()
 
- # string(TIMESTAMP BUILD_TIME "%Y%m%d")
 
 
  |