Explorar o código

Z991239-385 #comment 优化CPack

gifur %!s(int64=5) %!d(string=hai) anos
pai
achega
4b7792e111

+ 34 - 5
CMakeLists.txt

@@ -26,6 +26,12 @@ set(CMAKE_CXX_STANDARD 11)
 
 option(BUILD_TESTING "Build the project test case." OFF)
 
+option(WITH_DEBUG_SYMBOLS "Pack debug symbols to installer" ON)
+
+option(INSTALL_DEVELOP_FILES "install and pack develops header and libs files" OFF)
+
+option(WITH_THIRD_PARTY "Build third-party components" ON)
+
 set(SIMULATE_DEV_AND_TEST_TEMP ON)
 
 #  Include extend cmake scripts
@@ -78,6 +84,10 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
 
+if(NOT DEFINED BUILD_SHARED_LIBS)
+	set(BUILD_SHARED_LIBS ON)
+endif()
+
 if(MSVC)
 	set(LIB_PREFIX "")
 	set(LIB_SUFFIX ".dll")
@@ -331,6 +341,13 @@ include_directories("${CMAKE_BINARY_DIR}/winpr/include")
 
 include_directories(Common)
 add_subdirectory(third_party)
+if(WITH_THIRD_PARTY)
+	
+	if (NOT "${THIRD_PARTY_INCLUDES}" STREQUAL "")
+		include_directories(${THIRD_PARTY_INCLUDES})
+	endif()
+endif(WITH_THIRD_PARTY)
+
 add_subdirectory(winpr)
 add_subdirectory(libtoolkit)
 add_subdirectory(RVCComm)
@@ -406,9 +423,11 @@ if(MSVC)
 	endif()
 endif()
 
-# 
-install(DIRECTORY Common DESTINATION ${RVC_INCLUDE_PATH} COMPONENT headers FILES_MATCHING PATTERN "*.h")
-install(FILES "${PROJECT_BINARY_DIR}/spbase/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
+#
+if(INSTALL_DEVELOP_FILES)
+	install(DIRECTORY Common DESTINATION ${RVC_INCLUDE_PATH} COMPONENT headers FILES_MATCHING PATTERN "*.h")
+	install(FILES "${PROJECT_BINARY_DIR}/spbase/version.h" DESTINATION "${RVC_INCLUDE_PATH}/Common" COMPONENT headers)
+endif(INSTALL_DEVELOP_FILES)
 
 if(MSVC)
 	file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/win/*")
@@ -439,14 +458,24 @@ install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/${ROOT_INI_NAME}"
 install(PROGRAMS ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
 
 #appoint the component to install , except header file here.
+ #set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
+set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE TRUE)
+
 GET_CMAKE_PROPERTY(PACK_COMPONENTS_ALL  COMPONENTS)
 FOREACH(item ${PACK_COMPONENTS_ALL})
 message(STATUS "component: ${item}")
 ENDFOREACH()
-list(REMOVE_ITEM PACK_COMPONENTS_ALL  "headers" "tools" "symbols")
-#个人推断:该功能对 Release 版本才有效?
+list(REMOVE_ITEM PACK_COMPONENTS_ALL "headers" "tools" "symbols")
 set(CPACK_COMPONENTS_ALL ${PACK_COMPONENTS_ALL})
 
+set_property(GLOBAL PROPERTY COMPONENTS ${PACK_COMPONENTS_ALL})
+GET_CMAKE_PROPERTY(PACK_COMPONENTS_ALL  COMPONENTS)
+FOREACH(item ${PACK_COMPONENTS_ALL})
+message(STATUS "after component: ${item}")
+ENDFOREACH()
+
+set(CPACK_COMPONENT_headers_DISABLED TRUE)
+
 include(CPack)
 
 #install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_VERSION_DIR_PATH})")

+ 4 - 0
libtoolkit/CMakeLists.txt

@@ -113,6 +113,10 @@ install(TARGETS ${MODULE_NAME}
     LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
     COMPONENT libraries)
 
+if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
+    install(FILES ${CMAKE_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
+endif()
+
 #file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
 #install( FILES ${PUBLIC_HEADERS} DESTINATION "${RVC_INCLUDE_PATH}/${MODULE_NAME}" COMPONENT headers)
 

+ 5 - 1
sphost/CMakeLists.txt

@@ -46,4 +46,8 @@ install(TARGETS ${MODULE_NAME}
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
     ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
     LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
-	COMPONENT libraries)
+	COMPONENT libraries)
+
+if (WITH_DEBUG_SYMBOLS AND MSVC)
+    install(FILES ${CMAKE_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
+endif()

+ 4 - 0
spshell/CMakeLists.txt

@@ -56,3 +56,7 @@ install(TARGETS ${MODULE_NAME}
     ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
     LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
 	COMPONENT libraries)
+
+if (WITH_DEBUG_SYMBOLS AND MSVC)
+    install(FILES ${CMAKE_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT symbols)
+endif()

+ 4 - 3
third_party/openssl-1.1.1d/CMakeLists.txt

@@ -199,9 +199,10 @@ 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 ${CMAKE_INSTALL_INCLUDEDIR}/openssl )
+if(INSTALL_DEVELOP_FILES)
+    file( GLOB PUBLIC_HEADERS "${PROJECT_BINARY_DIR}/include/openssl/*.h" )
+    install( FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/openssl COMPONENT headers)
+endif(INSTALL_DEVELOP_FILES)
 
   # install( FILES
   # ${PROJECT_BINARY_DIR}/c_rehash

+ 4 - 2
third_party/scew/CMakeLists.txt

@@ -60,8 +60,10 @@ include_directories(expat-2.1.0/lib)
 add_library(${MODULE_NAME} SHARED ${scew_srcs})
 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)
+if(INSTALL_DEVELOP_FILES)
+	file(GLOB scew_header "scew/scew.h")
+	install(FILES ${scew_header} DESTINATION "${RVC_INCLUDE_PATH}/third_party/scew" COMPONENT headers)
+endif(INSTALL_DEVELOP_FILES)
 
 install(TARGETS ${MODULE_NAME} 
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"

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

@@ -73,8 +73,10 @@ 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 ${CMAKE_INSTALL_INCLUDEDIR})
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+if(INSTALL_DEVELOP_FILES)
+	install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT headers)
+	install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+endif(INSTALL_DEVELOP_FILES)
 
 
 

+ 7 - 5
winpr/include/CMakeLists.txt

@@ -20,8 +20,10 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/winpr/wtypes.h.in ${CMAKE_CURRENT_BIN
 
 set(WINPR_INSTALL_INCLUDE_DIR ${RVC_INCLUDE_PATH}/winpr${WINPR_VERSION_MAJOR}/winpr)
 
-file(GLOB WINPR_HEADERS "winpr/*.h")
-install(FILES ${WINPR_HEADERS} DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/winpr/version.h DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/winpr/wtypes.h DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers)
-install(DIRECTORY winpr/tools DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers FILES_MATCHING PATTERN "*.h")
+if(INSTALL_DEVELOP_FILES)
+    file(GLOB WINPR_HEADERS "winpr/*.h")
+    install(FILES ${WINPR_HEADERS} DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/winpr/version.h DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers)
+    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/winpr/wtypes.h DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers)
+    install(DIRECTORY winpr/tools DESTINATION ${WINPR_INSTALL_INCLUDE_DIR} COMPONENT headers FILES_MATCHING PATTERN "*.h")
+endif(INSTALL_DEVELOP_FILES)

+ 6 - 1
winpr/tools/CMakeLists.txt

@@ -112,7 +112,12 @@ endif()
 add_definitions(${WINPR_DEFINITIONS})
 target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${WINPR_TOOLS_LIBS})
 
-install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT WinPRTargets)
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+    ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+    COMPONENT libraries)
+
 if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
     get_target_property(OUTPUT_FILENAME ${MODULE_NAME} OUTPUT_NAME)
     install(FILES ${CMAKE_PDB_BINARY_DIR}/${OUTPUT_FILENAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)