Jelajahi Sumber

T20L8071 #comment 通过install指令生成终端版本,todo:root.ini的判断和include文件的去除

gifur 5 tahun lalu
induk
melakukan
c026d531ba

+ 42 - 12
CMakeLists.txt

@@ -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 ")

+ 23 - 0
addin/cfg/shell.ini.in

@@ -0,0 +1,23 @@
+[Main]
+SoftwareVersion=@RVC_FRAMEWORK_VERSION@
+
+[Entity]
+
+;ÆäËû
+HelloClient=0,mod_helloclient.dll,0x901
+HelloService=0,mod_helloservice.dll,0x902
+
+[Startup]
+Number=2
+1=HelloService
+2=HelloClient
+
+
+
+[Debug]
+HelloClient=1
+HelloService=1
+
+[MemTrace]
+;mod_simple=1
+;mod_console=1

+ 4 - 5
libtoolkit/CMakeLists.txt

@@ -49,9 +49,8 @@ install(TARGETS ${MODULE_NAME}
     LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
     COMPONENT libraries)
 
-# install(TARGETS ${MODULE_NAME} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
-
-
-file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
-install( FILES ${PUBLIC_HEADERS} DESTINATION "include/${MODULE_NAME}" COMPONENT headers)
+if(INSTALL_INCLUDE_FILES)
+    file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
+    install( FILES ${PUBLIC_HEADERS} DESTINATION "include/${MODULE_NAME}" COMPONENT headers)
+endif()
 

+ 0 - 0
spbase/Logo.png → res/Logo.png


+ 1 - 0
spbase/CMakeLists.txt

@@ -16,6 +16,7 @@ if (WIN32)
     @ONLY)
 
   set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+  list(APPEND ${MODULE_PREFIX}_SRCS "spbase.rc")
 endif()
 
 if(WIN32)

+ 1 - 1
spbase/SpBase.rc

@@ -50,7 +50,7 @@ END
 // PNG
 //
 
-IDB_VTMLOGO                PNG                     "Logo.png"
+IDB_VTMLOGO                PNG                     "..\\res\\Logo.png"
 #endif    // ÖÐÎÄ(¼òÌ壬Öйú) resources
 /////////////////////////////////////////////////////////////////////////////
 

+ 1 - 1
sphost/CMakeLists.txt

@@ -29,7 +29,7 @@ endif()
 
 add_executable(${MODULE_NAME} WIN32 ${${MODULE_PREFIX}_SRCS})
 target_link_libraries(${MODULE_NAME} libtoolkit spbase)
-copy_output_on_build(${MODULE_NAME} bin)
+# copy_output_on_build(${MODULE_NAME} bin)
 
 install(TARGETS ${MODULE_NAME} 
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"

+ 1 - 1
spshell/CMakeLists.txt

@@ -36,7 +36,7 @@ if(MSVC)
 	target_link_libraries(${MODULE_NAME} ws2_32 libtoolkit spbase)
 endif()
 
-copy_output_on_build(${MODULE_NAME} bin)
+# copy_output_on_build(${MODULE_NAME} bin)
 
 install(TARGETS ${MODULE_NAME} 
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"

+ 5 - 1
test/module/CMakeLists.txt

@@ -25,7 +25,11 @@ macro(add_module_libraries _module_prefix _module_name)
 endmacro(add_module_libraries)
 
 macro(deploy_module _module_prefix _module_name)
-    install(TARGETS ${_module_name} DESTINATION ${RVC_MODULE_LIBRARY_PATH} COMPONENT modules)
+    install(TARGETS ${_module_name} 
+    RUNTIME DESTINATION "${RVC_MODULE_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+    COMPONENT modules)
     set_property(TARGET ${_module_name} PROPERTY FOLDER "module/")
 endmacro(deploy_module)
 

+ 1 - 1
third_party/gtest/CMakeLists.txt

@@ -27,7 +27,7 @@ include(GNUInstallDirs)
 
 #Note that googlemock target already builds googletest
 option(BUILD_GMOCK "Builds the googlemock subproject" ON)
-option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" ON)
+option(INSTALL_GTEST "Enable installation of googletest. (Projects embedding googletest may want to turn this OFF.)" OFF)
 
 if(BUILD_GMOCK)
   add_subdirectory( googlemock )

+ 1 - 1
third_party/gtest/googletest/cmake/internal_utils.cmake

@@ -327,7 +327,7 @@ endfunction()
 function(install_project)
   if(INSTALL_GTEST)
     install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
-      DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+    DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
     # Install the project targets.
     install(TARGETS ${ARGN}
       EXPORT ${targets_export_name}

+ 1 - 0
third_party/openssl-1.1.1d/CMakeLists.txt

@@ -183,6 +183,7 @@ string( REPLACE "@OPENSSLDIR@" "${OPENSSLDIR}" C_REHASH "${C_REHASH}" )
 string( REPLACE "@CMAKE_INSTALL_PREFIX@" "${CMAKE_INSTALL_PREFIX}" C_REHASH "${C_REHASH}" )
 file( WRITE ${PROJECT_BINARY_DIR}/c_rehash "${C_REHASH}" )
 
+
 file( GLOB PUBLIC_HEADERS "${PROJECT_BINARY_DIR}/include/openssl/*.h" )
 install( FILES ${PUBLIC_HEADERS} DESTINATION include/openssl )
 

+ 1 - 0
third_party/scew/CMakeLists.txt

@@ -62,6 +62,7 @@ target_link_libraries(${MODULE_NAME} expat)
 
 file(GLOB scew_header "scew/scew.h")
 install(FILES ${scew_header} DESTINATION "${RVC_INCLUDE_PATH}/third_party/scew" COMPONENT headers)
+
 install(TARGETS ${MODULE_NAME} 
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
     ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"

+ 2 - 1
third_party/scew/expat-2.1.0/CMakeLists.txt

@@ -73,7 +73,8 @@ set(libdir "\${prefix}/lib")
 set(includedir "\${prefix}/include")
 configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc)
 
-install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
+# Gifur do it
+# install(FILES lib/expat.h lib/expat_external.h DESTINATION include)
 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION lib/pkgconfig)