Ver Fonte

!1 add cmake at first step

gifur há 6 anos atrás
pai
commit
b6570346c2
5 ficheiros alterados com 628 adições e 3 exclusões
  1. 185 3
      .gitignore
  2. 86 0
      CMakeLists.txt
  3. 28 0
      CMakeSettings.json
  4. 209 0
      libtoolkit/CMakeLists.txt
  5. 120 0
      spbase/CMakeLists.txt

+ 185 - 3
.gitignore

@@ -1,5 +1,187 @@
-################################################################################
-# 此 .gitignore 文件已由 Microsoft(R) Visual Studio 自动创建。
-################################################################################
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+.vs
+*.iml
+.gradle
+/local.properties
+/.idea/caches/build_file_checksums.ser
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+.DS_Store
+/captures
+.externalNativeBuild
 
+# User-specific files
+*.suo
 *.user
+*.sln.docstates
+
+# Build results
+
+[Dd]ebug/
+[Rr]elease/
+x64/
+Win32-[Dd]ebug/
+Win32-[Rr]elease/
+[Bb]in/
+[Oo]bj/
+[Tt]emp/
+ipch/
+[Tt]mp/
+
+# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
+!packages/*/build/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+*_i.c
+*_p.c
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.log
+*.scc
+*.tlog
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+*.ncrunch*
+.*crunch*.local.xml
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.Publish.xml
+
+# NuGet Packages Directory
+## TODO: If you have NuGet Package Restore enabled, uncomment the next line
+#packages/
+
+# Windows Azure Build Output
+csx
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+sql/
+*.Cache
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.[Pp]ublish.xml
+*.pfx
+*.publishsettings
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file to a newer
+# Visual Studio version. Backup files are not needed, because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+App_Data/*.mdf
+App_Data/*.ldf
+
+
+#LightSwitch generated files
+GeneratedArtifacts/
+_Pvt_Extensions/
+ModelManifest.xml
+
+# =========================
+# Windows detritus
+# =========================
+
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Mac desktop service store files
+.DS_Store
+
+# CMake
+out/
+build/
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CTestTestfile.cmake
+_deps
+

+ 86 - 0
CMakeLists.txt

@@ -0,0 +1,86 @@
+# CMakeList.txt: Framework 的 CMake 项目,在此处包括源代码并定义
+# 项目特定的逻辑。
+#
+cmake_minimum_required (VERSION 3.8)
+
+project(RvcFramework)
+
+# 设置为 C++11 标准
+set(CMAKE_CXX_STANDARD 11)
+
+# Enables color output when using the Makefile generator.
+set(CMAKE_COLOR_MAKEFILE ON)
+
+# 产品版权说明
+if(NOT DEFINED RVC_COMPANY)
+    set(RVC_COMPANY "CMB" CACHE STRING "China Merchants Bank")
+endif()
+if(NOT DEFINED RVC_PRODUCT)
+    set(RVC_PRODUCT "VTM" CACHE STRING "RVC VTM")
+endif()
+if(NOT DEFINED RVC_AUTHOR)
+    set(RVC_AUTHOR "CCDG" CACHE STRING "CCDG")
+endif()
+if(NOT DEFINED RVC_COPYRIGHT)
+    set(RVC_COPYRIGHT "Copyright (C) 2019" CACHE STRING "Copyright (C) 2019 by China Merchants Bank")
+endif()
+if(NOT DEFINED RVC_DESCRIPTION)
+    set(RVC_DESCRIPTION "2019.10" CACHE STRING "@2019.10")
+endif()
+
+# 设置版本号
+set(RAW_VERSTION_STRING "-1.0.0.1dev1")
+string(STRIP ${RAW_VERSTION_STRING} RAW_VERSTION_STRING)
+
+set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\1" RVC_VERSION_MAJOR "${RAW_VERSTION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\2" RVC_VERSION_MINOR "${RAW_VERSTION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\3" RVC_VERSION_REVISION "${RAW_VERSTION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\4" RVC_VERSION_BUILD "${RAW_VERSTION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\5" RVC_VERSION_SUFFIX "${RAW_VERSTION_STRING}")
+
+set(RVC_API_VERSION "${RVC_VERSION_MAJOR}")
+set(RVC_VERSION "${RVC_VERSION_MAJOR}.${RVC_VERSION_MINOR}.${RVC_VERSION_REVISION}.${RVC_VERSION_BUILD}")
+if (RVC_VERSION_SUFFIX)
+    set(RVC_VERSION_FULL "${RVC_VERSION}-${RVC_VERSION_SUFFIX}")
+else()
+    set(RVC_VERSION_FULL "${RVC_VERSION}")
+endif()
+
+message("RVC_VERSION=${RVC_VERSION_FULL}")
+
+# 包含一些 CMake 脚本
+set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)
+
+# 设置版本发布路径
+if (NOT RVC_DISTRIBUTION_PATH)
+    if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/distribution")
+        set (RVC_DISTRIBUTION_PATH "${CMAKE_CURRENT_SOURCE_DIR}/distribution")
+    else()
+        message(STATUS "RVC_DISTRIBUTION_PATH not set!")
+    endif()
+endif()
+
+# 默认为 Debug 版本
+if(NOT CMAKE_BUILD_TYPE)
+    set(CMAKE_BUILD_TYPE "Debug")
+endif()
+
+
+# 包含头文件引用路径
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
+
+# 引用 Common 文件夹
+set(RVC_SP_COMMMON_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/Common)
+include_directories(${RVC_SP_COMMMON_INCLUDE_DIR})
+
+add_subdirectory(libtoolkit)
+
+
+
+# 将源代码添加到此项目的可执行文件。
+
+
+# TODO: 如有需要,请添加测试并安装目标。

+ 28 - 0
CMakeSettings.json

@@ -0,0 +1,28 @@
+{
+  "configurations": [
+    {
+      "name": "x64-Debug",
+      "generator": "Visual Studio 16 2019 Win64",
+      "configurationType": "Debug",
+      "inheritEnvironments": [ "msvc_x64_x64" ],
+      "buildRoot": "${projectDir}\\out\\build\\${name}",
+      "installRoot": "${projectDir}\\out\\install\\${name}",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "",
+      "ctestCommandArgs": "",
+      "variables": []
+    },
+    {
+      "name": "x86-Debug",
+      "generator": "Visual Studio 16 2019",
+      "configurationType": "Debug",
+      "buildRoot": "${projectDir}\\out\\build\\${name}",
+      "installRoot": "${projectDir}\\out\\install\\${name}",
+      "cmakeCommandArgs": "",
+      "buildCommandArgs": "",
+      "ctestCommandArgs": "",
+      "inheritEnvironments": [ "msvc_x86" ],
+      "variables": []
+    }
+  ]
+}

+ 209 - 0
libtoolkit/CMakeLists.txt

@@ -0,0 +1,209 @@
+
+
+set(MODULE_NAME "toolkit")
+set(MODULE_PREFIX "TOOLKIT")
+
+set(TOOLKIT_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+set(TOOLKIT_SRCS "")
+set(TOOLKIT_INCLUDES "")
+set(TOOLKIT_DEFINITIONS "")
+
+# Soname versioning
+set(TOOLKIT_VERSION_MAJOR "1")
+set(TOOLKIT_VERSION_MINOR "0")
+set(TOOLKIT_VERSION_REVISION "0")
+set(TOOLKIT_VERSION "${TOOLKIT_VERSION_MAJOR}.${TOOLKIT_VERSION_MINOR}.${TOOLKIT_VERSION_REVISION}")
+set(TOOLKIT_VERSION_FULL "${TOOLKIT_VERSION}")
+set(TOOLKIT_API_VERSION "${TOOLKIT_VERSION_MAJOR}")
+
+# 设置对 C++11 的支持
+set(CMKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+
+
+set(${MODULE_PREFIX}_SRCS
+        __vcscan.c
+        adler32.c
+        adler32.h
+        array.c
+        array.h
+        base64.c
+        base64.h
+        bitarray.c
+        bitarray.h
+        ioqueue.c
+        ioqueue.h
+        bus.c
+        bus.h
+        bus_daemon.c
+        bus_internal.h
+        bytestream.h
+        config.h
+        cputime.c
+        cputime.h
+        crc32.c
+        crc32.h
+        dllmain.c
+        DumpException.c
+        DumpException.h
+        fileutil.c
+        fileutil.h
+        getopt.c
+        getopt.h
+        getparam.c
+        getparam.h
+        gettimeofday.c
+        gettimeofday.h
+        hash.h
+        hashset.c
+        hashset.h
+        heaputil.c
+        heaputil.h
+        iatpatch.c
+        iatpatch.h
+        iconv.c
+        iconv.h
+        iniutil.c
+        iniutil.h
+        intalgo.c
+        intalgo.h
+        iobuffer.c
+        iobuffer.h
+        ioreactor.c
+        ioreactor.h
+        jhash.h
+        kvpconfig.c
+        kvpconfig.h
+        list.h
+        ListEntry.h
+        log.c
+        log.h
+        log_base.h
+        log_factory.c
+        log_factory.h
+        log_hdr.h
+        log_mgr.c
+        log_mgr.h
+        log_periodic.c
+        log_periodic.h
+        log_redirect.c
+        log_redirect.h
+        log_single.c
+        log_single.h
+        log_udpclient.c
+        log_udpclient.h
+        log_udpdaemon.c
+        log_udpdaemon.h
+        md5.c
+        md5.h
+        meminfo.h
+        memtrace.c
+        memtrace.h
+        memutil.c
+        memutil.h
+        ntservice.c
+        ntservice.h
+        ooputil.h
+        osutil.c
+        osutil.h
+        process_monitor.c
+        process_monitor.h
+        q_malloc.c
+        q_malloc.h
+        queue.h
+        rbtree.c
+        rbtree.h
+        refcnt.h
+        regddx.c
+        regddx.h
+        res_stack.h
+        rtp.c
+        rtp.h
+        rtpsession.c
+        rtpsession.h
+        shm.c
+        shm.h
+        shm_array.c
+        shm_array.h
+        shm_mem.c
+        shm_mem.h
+        shm_table.c
+        shm_table.h
+        slab.h
+        sockutil.c
+        sockutil.h
+        spinlock.c
+        spinlock.h
+        stacktrace.c
+        stacktrace.h
+        stdint.h
+        stest.c
+        stest.h
+        stm.c
+        stm.h
+        strptime.c
+        strptime.h
+        strutil.c
+        strutil.h
+        threadpool.c
+        threadpool.h
+        timerqueue.c
+        timerqueue.h
+        url.c
+        url.h
+        vsscanf.c
+        vsscanf.h
+        vsscanf1.c
+        waitresult.c
+        waitresult.h
+        wavfile.c
+        wavfile.h
+        y2k_time.c
+        y2k_time.h
+        )
+
+
+add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
+
+# set_target_properties(${MODULE_NAME} PROPERTIES LINKER_LANGUAGE C)
+# set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${MODULE_NAME}${RVC_VERSION_MAJOR})
+
+if (MSVC)
+	add_definitions(-DLIBTOOLKIT_EXPORTS)
+endif (MSVC)
+
+if(NOT RVC_DISTRIBUTION_DIR)
+	if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+		set(RVC_DISTRIBUTION_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../distribution/${ANDROID_ABI})
+	else()
+		set(RVC_DISTRIBUTION_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../distribution)
+	endif()
+endif()
+
+if(ANDROID)
+set(TOOLKIT_DISTRIBUTION_DIR "${RVC_DISTRIBUTION_DIR}/include/lib${MODULE_NAME}")
+endif(ANDROID)
+
+
+if(NOT EXISTS "${TOOLKIT_DISTRIBUTION_DIR}" AND IS_DIRECTORY "${TOOLKIT_DISTRIBUTION_DIR}")
+    add_custom_command(
+            TARGET ${MODULE_NAME}
+            POST_BUILD
+            COMMAND ${CMAKE_COMMAND}
+            ARGS -E make_directory "${TOOLKIT_DISTRIBUTION_DIR}"
+    )
+endif()
+
+set(TOOLKIT_DISTRIBUTION_LIBDIR "${RVC_DISTRIBUTION_DIR}")
+set_target_properties(${MODULE_NAME}
+        PROPERTIES
+        LIBRARY_OUTPUT_DIRECTORY
+        ${TOOLKIT_DISTRIBUTION_LIBDIR})
+
+file(GLOB TOOLKIT_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
+#list(REMOVE_ITEM TOOLKIT_HEADERS "res")
+add_custom_command(
+        TARGET ${MODULE_NAME}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND}
+        ARGS -E copy ${TOOLKIT_HEADERS} "${TOOLKIT_DISTRIBUTION_DIR}"
+)

+ 120 - 0
spbase/CMakeLists.txt

@@ -0,0 +1,120 @@
+
+
+set(MODULE_NAME "spbase")
+set(MODULE_PREFIX "SPBASE")
+
+set(SPBASE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
+set(SPBASE_SRCS "")
+set(SPBASE_INCLUDES "")
+set(SPBASE_DEFINITIONS "")
+
+# Soname versioning
+set(SPBASE_VERSION_MAJOR "1")
+set(SPBASE_VERSION_MINOR "0")
+set(SPBASE_VERSION_REVISION "0")
+set(SPBASE_VERSION "${SPBASE_VERSION_MAJOR}.${SPBASE_VERSION_MINOR}.${SPBASE_VERSION_REVISION}")
+set(SPBASE_VERSION_FULL "${SPBASE_VERSION}")
+set(SPBASE_API_VERSION "${SPBASE_VERSION_MAJOR}")
+
+set(${MODULE_PREFIX}_SRCS
+        sp_def.h
+        sp_uid.c
+        sp_uid.h
+        sp_rsn.c
+        sp_rsn.h
+        sp_log.c
+        sp_dbg.cpp
+        sp_dbg.h
+        sp_dir.h
+        sp_dir.c
+        sp_cfg.cpp
+        sp_cfg.h
+        sp_btr.c
+        sp_btr.h
+        sp_iom.c
+        sp_iom.h
+        sp_tmr.c
+        sp_tmr.h
+        sp_svc.c
+        sp_svc.h
+        sp_bcm.c
+        sp_bcm.h
+        sp_mod.c
+        sp_mod.h
+        sp_env.c
+        sp_env.h
+        sp_var.c
+        sp_var.h
+        sp_rpc.c
+        sp_rpc.h
+        sp_shm.c
+        sp_pst.c
+        sp_gui.h
+        sp_iocp.c
+        sp_iocp.h
+        sp_gui.cpp
+        SpBase.cpp
+        SpMisc.cpp
+        )
+
+
+add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
+
+# set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME ${MODULE_NAME}${RVC_VERSION_MAJOR})
+
+target_link_libraries(${MODULE_NAME} toolkit)
+
+if(NOT RVC_DISTRIBUTION_DIR)
+    set(RVC_DISTRIBUTION_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../distribution/${ANDROID_ABI})
+endif()
+set(COMMON_DISTRIBUTION_INCLUDE_DIR "${RVC_DISTRIBUTION_DIR}/include/common")
+if(EXISTS "${COMMON_DISTRIBUTION_INCLUDE_DIR}" AND IS_DIRECTORY "${COMMON_DISTRIBUTION_INCLUDE_DIR}")
+else()
+    add_custom_command(
+            TARGET ${MODULE_NAME}
+            POST_BUILD
+            COMMAND ${CMAKE_COMMAND}
+            ARGS -E make_directory "${COMMON_DISTRIBUTION_INCLUDE_DIR}"
+    )
+endif()
+
+set(SPBASE_DISTRIBUTION_LIBDIR "${RVC_DISTRIBUTION_DIR}")
+set_target_properties(${MODULE_NAME}
+        PROPERTIES
+        LIBRARY_OUTPUT_DIRECTORY
+        ${SPBASE_DISTRIBUTION_LIBDIR})
+
+file(GLOB RVC_COMMON_HEADERS "${SPBASE_DIR}/../include/common/*.h")
+list(REMOVE_ITEM RVC_COMMON_HEADERS "resource1.h" "spShareMemoryBase.h")
+add_custom_command(
+        TARGET ${MODULE_NAME}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND}
+        ARGS -E copy ${RVC_COMMON_HEADERS} "${COMMON_DISTRIBUTION_INCLUDE_DIR}"
+)
+
+
+install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT SpBaseTargets)
+
+# cmake project
+if(${CMAKE_VERSION} VERSION_GREATER "2.8.10")
+
+    export(PACKAGE SPBASE)
+
+    SetRVCCMakeInstallDir(SPBASE_CMAKE_INSTALL_DIR "SPBASE${RVC_VERSION_MARJOR}")
+
+    file(GLOB SPBASE_HEADERS ${SPBASE_DIR}/*.h)
+    set(SPBASE_INCLUDE_DIR "include/SPBASE${RVC_VERSION_MARJOR}")
+
+    configure_package_config_file(SpBaseConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/SpBaseConfig.cmake
+            INSTALL_DESTINATION ${SPBASE_CMAKE_INSTALL_DIR}
+        PATH_VARS SPBASE_INCLUDE_DIR)
+
+    write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/SpBaseConfigVersion.cmake
+    VERSION ${RVC_VERSION} COMPATIBILITY SameMajorVersion)
+
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/SpBaseConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/SpBaseConfigVersion.cmake
+    DESTINATION ${SPBASE_CMAKE_INSTALL_DIR})
+
+    install(EXPORT SpBaseTargets DESTINATION ${SPBASE_CMAKE_INSTALL_DIR})
+endif()