|
|
@@ -31,11 +31,46 @@ set(CMAKE_CXX_STANDARD 11)
|
|
|
|
|
|
option(BUILD_TESTING "Build the project tests." ON)
|
|
|
|
|
|
+set(BUILD_NUMBER 0)
|
|
|
+if ($ENV{BUILD_NUMBER})
|
|
|
+ set(BUILD_NUMBER $ENV{BUILD_NUMBER})
|
|
|
+endif()
|
|
|
+
|
|
|
+set(RVC_COMPANY "CMB" CACHE STRING "China Merchants Bank")
|
|
|
+set(RVC_PRODUCT "VTM")
|
|
|
+set(RVC_AUTHOR "CCDG")
|
|
|
+set(RVC_COPYRIGHT "Copyright (C) 2020")
|
|
|
+set(RVC_DESCRIPTION "2020.01")
|
|
|
+
|
|
|
+set(RAW_VERSION_STRING "0.0.1-dev1")
|
|
|
+
|
|
|
+string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
|
|
|
+
|
|
|
+set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
|
|
|
+string(REGEX REPLACE "${VERSION_REGEX}" "\\1" RVC_VERSION_MAJOR "${RAW_VERSION_STRING}")
|
|
|
+string(REGEX REPLACE "${VERSION_REGEX}" "\\2" RVC_VERSION_MINOR "${RAW_VERSION_STRING}")
|
|
|
+string(REGEX REPLACE "${VERSION_REGEX}" "\\3" RVC_VERSION_REVISION "${RAW_VERSION_STRING}")
|
|
|
+string(REGEX REPLACE "${VERSION_REGEX}" "\\4" RVC_VERSION_SUFFIX "${RAW_VERSION_STRING}")
|
|
|
+
|
|
|
+set(RVC_VERSION_BUILD "${BUILD_NUMBER}")
|
|
|
+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}")
|
|
|
+
|
|
|
+configure_file("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
|
|
|
+include_directories(${PROJECT_BINARY_DIR})
|
|
|
+
|
|
|
if(BUILD_TESTING)
|
|
|
include(CTest)
|
|
|
message(STATUS "build the tests.")
|
|
|
enable_testing()
|
|
|
set(GTEST_ROOT "${CMAKE_SOURCE_DIR}/third_party/gtest/googletest/include")
|
|
|
+ set(GMOCK_ROOT "${CMAKE_SOURCE_DIR}/third_party/gtest/googlemock/include")
|
|
|
if(MSVC)
|
|
|
set(TESTING_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
|
|
|
else()
|
|
|
@@ -43,6 +78,7 @@ if(BUILD_TESTING)
|
|
|
endif()
|
|
|
endif()
|
|
|
|
|
|
+# specifies what build type (configuration) will be built in this build tree
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
set(CMAKE_BUILD_TYPE "Debug")
|
|
|
endif()
|
|
|
@@ -50,6 +86,47 @@ endif()
|
|
|
# Turn on solution folders (2.8.4+)
|
|
|
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
|
|
+set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
|
|
|
+# 如果使用绝对路径,会导致 CPack 因 CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION 失败
|
|
|
+# set(RVC_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include")
|
|
|
+# set(RVC_LIBRARY_PATH "${CMAKE_INSTALL_LIBDIR}")
|
|
|
+# set(RVC_RUNTIME_PATH "${CMAKE_INSTALL_BINDIR}")
|
|
|
+# set(RVC_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/bin")
|
|
|
+
|
|
|
+set(RVC_INCLUDE_PATH "include")
|
|
|
+set(RVC_LIBRARY_PATH "lib")
|
|
|
+set(RVC_RUNTIME_PATH "bin")
|
|
|
+
|
|
|
+if (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
|
|
|
+ message(STATUS "debug type")
|
|
|
+endif()
|
|
|
+
|
|
|
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
|
|
|
+ if(NOT CMAKE_GENERATOR_PLATFORM)
|
|
|
+ message(STATUS "set win32 platform default")
|
|
|
+ set(CMAKE_GENERATOR_PLATFORM "Win32")
|
|
|
+ else()
|
|
|
+ message(STATUS ${CMAKE_GENERATOR_PLATFORM})
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}")
|
|
|
+set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}")
|
|
|
+
|
|
|
+if(WIN32)
|
|
|
+ # dll rc version
|
|
|
+ string(TIMESTAMP RC_VERSION_YEAR "%Y")
|
|
|
+ set(RC_VERSION_AUTHOR ${RVC_AUTHOR})
|
|
|
+ set(RC_VERSION_COMPANY ${RVC_COMPANY})
|
|
|
+ set(RC_VERSION_PRODUCT ${RVC_PRODUCT})
|
|
|
+ set(RC_VERSION_PATCH ${BUILD_NUMBER})
|
|
|
+ set(RC_VERSION_DESCRIPTION "${RVC_VERSION_FULL} ${CPACK_SYSTEM_NAME}")
|
|
|
+endif(WIN32)
|
|
|
+
|
|
|
+if(BUILD_SHARED_LIBS)
|
|
|
+ message(STATUS "build shared libs")
|
|
|
+endif(BUILD_SHARED_LIBS)
|
|
|
+
|
|
|
include_directories(Common)
|
|
|
add_subdirectory(third_party)
|
|
|
add_subdirectory(libtoolkit)
|
|
|
@@ -62,4 +139,52 @@ if(BUILD_TESTING)
|
|
|
add_subdirectory(test)
|
|
|
endif()
|
|
|
|
|
|
+# 会直接复制文件夹
|
|
|
+install(DIRECTORY Common DESTINATION ${RVC_INCLUDE_PATH} COMPONENT headers FILES_MATCHING PATTERN "*.h")
|
|
|
+install(FILES "${PROJECT_BINARY_DIR}/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
|
|
|
+
|
|
|
+set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.gitignore;/CMakeCache.txt")
|
|
|
+
|
|
|
+string(TOLOWER ${CMAKE_PROJECT_NAME} CMAKE_PROJECT_NAME_lower)
|
|
|
+set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${RVC_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
|
|
|
+set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME_lower}-${RVC_VERSION_FULL}-${CPACK_SYSTEM_NAME}")
|
|
|
+
|
|
|
+# 设置软件包名
|
|
|
+set(CPACK_PACKAGE_NAME "RvcFramework")
|
|
|
+set(CPACK_PACKAGE_VENDOR "RVC-CCDG")
|
|
|
+# 设置软件包版本
|
|
|
+set(CPACK_PACKAGE_VERSION ${RVC_VERSION_FULL})
|
|
|
+set(CPACK_PACKAGE_VERSION_MAJOR ${RVC_VERSION_MAJOR})
|
|
|
+set(CPACK_PACKAGE_VERSION_MINOR ${RVC_VERSION_MINOR})
|
|
|
+set(CPACK_PACKAGE_VERSION_PATCH ${RVC_VERSION_REVISION})
|
|
|
+
|
|
|
+set(CPACK_COMPONENTS_ALL headers libraries)
|
|
|
+
|
|
|
+if(MSVC)
|
|
|
+ if( NOT CPACK_GENERATOR)
|
|
|
+ set(CPACK_GENERATOR "ZIP")
|
|
|
+ message(STATUS "set zip package file type")
|
|
|
+ endif()
|
|
|
+ if(CPACK_GENERATOR MATCHES "NSIS")
|
|
|
+ set(CPACK_PACKAGE_INSTALL_DIRECTORY "C:\\\\Run")
|
|
|
+ endif()
|
|
|
+endif(MSVC)
|
|
|
+
|
|
|
+if(MSVC)
|
|
|
+ if(MSVC_RUNTIME STREQUAL "dynamic")
|
|
|
+ message(STATUS "dynamic format")
|
|
|
+ # the INSTALL command is not called. The user can use the variable
|
|
|
+ # CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS to use a custom install command and install them however they want.
|
|
|
+ set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
|
|
+ include(InstallRequiredSystemLibraries)
|
|
|
+ install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
|
|
|
+ DESTINATION ${RVC_RUNTIME_PATH}
|
|
|
+ COMPONENT libraries)
|
|
|
+ else()
|
|
|
+ include(InstallRequiredSystemLibraries)
|
|
|
+ endif()
|
|
|
+endif()
|
|
|
+
|
|
|
+include(CPack)
|
|
|
+
|
|
|
|