|
|
@@ -30,6 +30,7 @@ project(RvcFramework)
|
|
|
set(CMAKE_CXX_STANDARD 11)
|
|
|
|
|
|
option(BUILD_TESTING "Build the project tests." ON)
|
|
|
+option(INSTALL_INCLUDE_FILES "Enable installation of include header file or third_party" OFF)
|
|
|
|
|
|
set(BUILD_NUMBER 0)
|
|
|
if ($ENV{BUILD_NUMBER})
|
|
|
@@ -55,6 +56,7 @@ string(REGEX REPLACE "${VERSION_REGEX}" "\\4" RVC_VERSION_SUFFIX "${RAW_VERSION_
|
|
|
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}")
|
|
|
+set(RVC_FRAMEWORK_VERSION "${RVC_VERSION_MAJOR}.${RVC_VERSION_MINOR}.${RVC_VERSION_REVISION}")
|
|
|
if (RVC_VERSION_SUFFIX)
|
|
|
set(RVC_VERSION_FULL "${RVC_VERSION}-${RVC_VERSION_SUFFIX}")
|
|
|
else()
|
|
|
@@ -93,12 +95,10 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
|
|
|
|
# 在 Windows 下用 "/" 会报错
|
|
|
STRING(REGEX REPLACE "^([A-Z]*.)([/\\].*)" "\\1" CURRENT_DISK "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
|
-message(STATUS "current disk: ${CURRENT_DISK}")
|
|
|
+# message(STATUS "current disk: ${CURRENT_DISK}")
|
|
|
set(OUTPUT_VERSION_PATH "${CURRENT_DISK}\\run\\version\\${RVC_VERSION}")
|
|
|
-message(STATUS "current OUTPUT_VERSION_PATH: ${OUTPUT_VERSION_PATH}")
|
|
|
+# message(STATUS "current OUTPUT_VERSION_PATH: ${OUTPUT_VERSION_PATH}")
|
|
|
|
|
|
-set(CMAKE_INSTALL_PREFIX "${OUTPUT_VERSION_PATH}")
|
|
|
-#set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
|
|
|
# 如果使用绝对路径,会导致 CPack 因 CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION 失败
|
|
|
# set(RVC_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include")
|
|
|
# set(RVC_LIBRARY_PATH "${CMAKE_INSTALL_LIBDIR}")
|
|
|
@@ -108,13 +108,16 @@ set(CMAKE_INSTALL_PREFIX "${OUTPUT_VERSION_PATH}")
|
|
|
set(RVC_INCLUDE_PATH "include")
|
|
|
set(RVC_LIBRARY_PATH "lib")
|
|
|
set(RVC_RUNTIME_PATH "bin")
|
|
|
+set(RVC_MODULE_PATH "mod")
|
|
|
+set(RVC_CONFIG_PATH "cfg")
|
|
|
+set(RVC_VENDOR_PATH "dep")
|
|
|
# set(RVC_MODULE_LIBRARY_PATH "${CMAKE_BINARY_DIR}/mod")
|
|
|
|
|
|
macro(copy_output_on_build module_name output_subdir)
|
|
|
set(target_name ${module_name})
|
|
|
set(output_dir ${OUTPUT_VERSION_PATH}\\${output_subdir})
|
|
|
if(NOT EXISTS ${output_dir} OR NOT IS_DIRECTORY ${output_dir})
|
|
|
-
|
|
|
+ # nothing to do.
|
|
|
endif()
|
|
|
add_custom_command(TARGET ${target_name} PRE_BUILD
|
|
|
COMMAND ${CMAKE_COMMAND}
|
|
|
@@ -128,7 +131,11 @@ endmacro(copy_output_on_build)
|
|
|
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
|
|
|
message(STATUS "debug type")
|
|
|
+ set(BUILD_TYPE_NAME "Debug")
|
|
|
+else()
|
|
|
+ set(BUILD_TYPE_NAME "Release")
|
|
|
endif()
|
|
|
+string(TOLOWER ${BUILD_TYPE_NAME} BUILD_TYPE_NAME_lower)
|
|
|
|
|
|
if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
|
|
|
if(NOT CMAKE_GENERATOR_PLATFORM)
|
|
|
@@ -139,8 +146,8 @@ if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
|
|
|
endif()
|
|
|
endif()
|
|
|
|
|
|
-set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}")
|
|
|
-set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}")
|
|
|
+set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}-${BUILD_TYPE_NAME}")
|
|
|
+set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}-${BUILD_TYPE_NAME}")
|
|
|
|
|
|
if(WIN32)
|
|
|
# dll rc version
|
|
|
@@ -168,12 +175,15 @@ 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(REPLACE "\\" "/" OUTPUT_VERSION_PATH ${OUTPUT_VERSION_PATH})
|
|
|
+set(CMAKE_INSTALL_PREFIX "${OUTPUT_VERSION_PATH}")
|
|
|
+#set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
|
|
|
+set(CMAKE_INSTALL_LOCAL_ONLY ON)
|
|
|
+include(InstallRequiredSystemLibraries)
|
|
|
|
|
|
+# 打包
|
|
|
+set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.gitignore;/CMakeCache.txt;/\\\\build;/\\\\out")
|
|
|
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}")
|
|
|
@@ -216,6 +226,26 @@ endif()
|
|
|
|
|
|
include(CPack)
|
|
|
|
|
|
+# 会直接复制文件夹
|
|
|
+if(INSTALL_INCLUDE_FILES)
|
|
|
+ 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)
|
|
|
+endif()
|
|
|
+
|
|
|
+
|
|
|
+install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/${RVC_RUNTIME_PATH}" DESTINATION "." COMPONENT libraries)
|
|
|
+install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/${RVC_CONFIG_PATH}" DESTINATION "." COMPONENT configs FILES_MATCHING PATTERN "*.ini")
|
|
|
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/addin/${RVC_CONFIG_PATH}/shell.ini.in" ${CMAKE_CURRENT_BINARY_DIR}/shell.ini @ONLY)
|
|
|
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/shell.ini DESTINATION ${RVC_CONFIG_PATH})
|
|
|
+
|
|
|
+# if necessary
|
|
|
+# install(DIRECTORY ${CMAKE_SOURCE_DIR}/addin/mod DESTINATION ${RVC_MODULE_PATH} COMPONENT modules)
|
|
|
+# install(DIRECTORY ${CMAKE_SOURCE_DIR}/addin/dep DESTINATION ${RVC_VENDOR_PATH} COMPONENT vendors)
|
|
|
+# install(PROGRAMS "")
|
|
|
+install(CODE "message(\"install message start.\")")
|
|
|
+install(CODE "EXECUTE_PROCESS(COMMAND -E remove_directory \"${CMAKE_INSTALL_PREFIX}/${RVC_INCLUDE_PATH}\")")
|
|
|
+install(CODE "message(\"install message done.\")")
|
|
|
+# no used now
|
|
|
function(package_static_libs output_library)
|
|
|
get_target_property(libtype ${output_library} TYPE)
|
|
|
if(NOT libtype STREQUAL "STATIC_LIBRARY" OR NOT libtype STREQUAL "EXECUTABLE ")
|