Browse Source

Z991239-351 #comment 优化下cmake脚本

gifur 5 years ago
parent
commit
6f14821546
3 changed files with 80 additions and 76 deletions
  1. 78 72
      CMakeLists.txt
  2. 0 0
      addin/din/win/MetroWatcher64.exe
  3. 2 4
      libtoolkit/CMakeLists.txt

+ 78 - 72
CMakeLists.txt

@@ -9,20 +9,15 @@
 #   mkdir build
 #   cd build
 #   cmake ..
-#   cmake --build . --config Release
+#   cmake --build . --config {Release|Debug}
 #
 # The cmake .. command looks in the parent folder for a file named
 # CMakeLists.txt, reads it, and sets up everything needed to build program.
-# Also, note that CMake can generate Visual Studio or XCode project files.  So
-# if instead you had written:
-#   cd build
-#   cmake .. -G Xcode
 #
-# You would be able to open the resulting Xcode project and compile and edit
-# the example programs within the Xcode IDE.  CMake can generate a lot of
-# different types of IDE projects.  Run the cmake -h command to see a list of
-# arguments to -G to see what kinds of projects cmake can generate for you.  It
-# probably includes your favorite IDE in the list.
+# CMake can generate a lot of different types of IDE projects.  Run the cmake -h 
+# command to see a list of arguments to -G to see what kinds of projects cmake can generate for you. 
+# It probably includes your favorite IDE in the list.
+
 cmake_minimum_required (VERSION 3.8)
 
 project(RvcFramework)
@@ -30,17 +25,16 @@ project(RvcFramework)
 set(CMAKE_CXX_STANDARD 11)
 
 option(BUILD_TESTING "Build the project test case." OFF)
-option(INSTALL_INCLUDE_FILES "Enable installation of include header file or third_party" ON)
 
 set(SIMULATE_DEV_AND_TEST_TEMP ON)
 
-# 
+#  Include extend cmake scripts
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/addin/cmake/ )
 include(CheckStructHasMember)
 include(CheckIncludeFiles)
 include(CheckSymbolExists)
 
-# Turn on solution folders (2.8.4+)
+# Turn on solution folders (2.8.4+) for Visual Studio.
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
 set(BUILD_NUMBER 0)
@@ -54,6 +48,7 @@ set(RVC_AUTHOR "CCDG")
 set(RVC_COPYRIGHT "Copyright (C) 2020")
 set(RVC_DESCRIPTION "2020.01")
 
+#Set the project version
 set(RAW_VERSION_STRING "0.0.1-dev1")
 
 string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
@@ -85,13 +80,13 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
 
 if(MSVC)
-set(LIB_PREFIX "")
-set(LIB_SUFFIX ".dll")
-set(ROOT_INI_NAME "root.ini.win32")
+	set(LIB_PREFIX "")
+	set(LIB_SUFFIX ".dll")
+	set(ROOT_INI_NAME "root.ini.win32")
 else()
-set(LIB_PREFIX "lib")
-set(LIB_SUFFIX ".so")
-set(ROOT_INI_NAME "root.ini.unix")
+	set(LIB_PREFIX "lib")
+	set(LIB_SUFFIX ".so")
+	set(ROOT_INI_NAME "root.ini.unix")
 endif(MSVC)
 
 if(SIMULATE_DEV_AND_TEST_TEMP)
@@ -126,6 +121,9 @@ endif()
 if(NOT CMAKE_BUILD_TYPE)
 	set(CMAKE_BUILD_TYPE "Debug")
 endif()
+if(BUILD_SHARED_LIBS)
+	message(STATUS "Build shared libraries")
+endif(BUILD_SHARED_LIBS)
 
 if (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
 	message(STATUS "debug type")
@@ -138,7 +136,14 @@ string(TOLOWER ${BUILD_TYPE_NAME} BUILD_TYPE_NAME_lower)
 if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
 	if(NOT CMAKE_GENERATOR_PLATFORM)
 		message(STATUS "set win32 platform default")
-		set(CMAKE_GENERATOR_PLATFORM "Win32")
+		set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
+	else()
+		message(STATUS ${CMAKE_GENERATOR_PLATFORM})
+	endif()
+elseif(${CMAKE_GENERATOR} MATCHES "Unix*")
+	if(NOT CMAKE_GENERATOR_PLATFORM)
+		message(STATUS "set unix platform default")
+		set(CMAKE_GENERATOR_PLATFORM "${CMAKE_SYSTEM_PROCESSOR}")
 	else()
 		message(STATUS ${CMAKE_GENERATOR_PLATFORM})
 	endif()
@@ -150,15 +155,14 @@ endif()
 #	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32 -g")
 #endif()
 
-if(BUILD_SHARED_LIBS)
-	message(STATUS "build shared libs")
-endif(BUILD_SHARED_LIBS)
+
 
 # Configure MSVC Runtime
 if(MSVC)
 	include(MSVCRuntime)
 	if(NOT DEFINED MSVC_RUNTIME)
 		set(MSVC_RUNTIME "dynamic")
+		message(STATUS "dynamic format")
 	endif()
 	set(MSVC_DYNAMIC_RUNTIME ${MSVC_RUNTIME})
 	configure_msvc_runtime()
@@ -196,16 +200,17 @@ else(MSVC)
 endif(MSVC)
 set(OUTPUT_VERSION_DIR_PATH "${OUTPUT_CUR_DISK_PATH}run\\version")
 set(OUTPUT_CUR_VERSION_PATH "${OUTPUT_VERSION_DIR_PATH}\\${RVC_VERSION}")
+
 if(NOT MSVC)
 	string(REPLACE "\\" "/" OUTPUT_VERSION_DIR_PATH ${OUTPUT_VERSION_DIR_PATH})
 	string(REPLACE "\\" "/" OUTPUT_CUR_VERSION_PATH ${OUTPUT_CUR_VERSION_PATH})
 endif(NOT MSVC)
 
 
-
+#Config install information
 set(PACK_INSTALL_RUN_DIR "run")
 set(PACK_INSTALL_PREFIX_VERSION "${PACK_INSTALL_RUN_DIR}/version")
-set(PACK_INSTALL_PREFIX_CUR_VER "run/version/${RVC_VERSION}")
+set(PACK_INSTALL_PREFIX_CUR_VER "${PACK_INSTALL_PREFIX_VERSION}/${RVC_VERSION}")
 
 set(RVC_INCLUDE_PATH "${PACK_INSTALL_PREFIX_CUR_VER}/include")
 set(RVC_LIBRARY_PATH "${PACK_INSTALL_PREFIX_CUR_VER}/lib")
@@ -219,21 +224,22 @@ set(CMAKE_INSTALL_INCLUDEDIR ${RVC_INCLUDE_PATH})
 set(CMAKE_INSTALL_LIBDIR ${RVC_LIBRARY_PATH})
 set(CMAKE_INSTALL_BINDIR ${RVC_RUNTIME_PATH})
 
-macro(copy_output_on_build module_name output_subdir)
-	set(target_name ${module_name})
-	set(output_dir ${OUTPUT_CUR_DISK_PATH}\\${output_subdir})
-	if(NOT EXISTS ${output_dir} OR NOT IS_DIRECTORY ${output_dir})
+# This macro maybe not be used now!!
+# macro(copy_output_on_build module_name output_subdir)
+#	set(target_name ${module_name})
+#	set(output_dir ${OUTPUT_CUR_DISK_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}
-		ARGS -E make_directory ${output_dir})
-	add_custom_command(TARGET ${target_name} POST_BUILD
-		COMMAND ${CMAKE_COMMAND} -E copy
-		$<TARGET_FILE:${target_name}>
-		${OUTPUT_CUR_DISK_PATH}/${output_subdir}
-	)
-endmacro(copy_output_on_build)
+#	endif()
+#	add_custom_command(TARGET ${target_name} PRE_BUILD
+#		COMMAND ${CMAKE_COMMAND}
+#		ARGS -E make_directory ${output_dir})
+#	add_custom_command(TARGET ${target_name} POST_BUILD
+#		COMMAND ${CMAKE_COMMAND} -E copy
+#		$<TARGET_FILE:${target_name}>
+#		${OUTPUT_CUR_DISK_PATH}/${output_subdir}
+#	)
+#endmacro(copy_output_on_build)
 
 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}")
@@ -246,9 +252,8 @@ if(WIN32)
 	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(WIN32)
+	#set previous definitions
 	add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 	add_definitions(-DWIN32_LEAN_AND_MEAN)
 	add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS)
@@ -320,6 +325,7 @@ if(BUILD_TESTING)
 	add_subdirectory(test)
 endif()
 
+#Just copy and edit a little for output buildflags.h header file, deal it at future.
 set(RVC_BUILD_CONFIG_LIST "")
 GET_CMAKE_PROPERTY(res VARIABLES)
 FOREACH(var ${res})
@@ -339,12 +345,11 @@ set(CMAKE_INSTALL_PREFIX "${OUTPUT_CUR_DISK_PATH}")
 #set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
 set(CMAKE_INSTALL_LOCAL_ONLY ON)
 
-# 
+# Config package information.
 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}")
-
 # 
 set(CPACK_PACKAGE_NAME "RvcFramework")
 set(CPACK_PACKAGE_VENDOR "RVC-CCDG")
@@ -354,11 +359,7 @@ 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 symbols scripts)
-#TODO: to comfirm
-set(CPACK_COMPONENTS_ALL libraries symbols scripts)
-
-
+# Configure package type
 if(MSVC)
 	if( NOT CPACK_GENERATOR)
 		set(CPACK_GENERATOR "ZIP")
@@ -376,7 +377,6 @@ 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)
@@ -389,46 +389,52 @@ if(MSVC)
 	endif()
 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 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)
+
+if(MSVC)
+	file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/win/*")
+else()
+	file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/unix/*")
+endif(MSVC)
+install(PROGRAMS ${BIN_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
 
-file(GLOB BIN_FILES "${CMAKE_SOURCE_DIR}/addin/din/*")
-install(FILES ${BIN_FILES} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
-#install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/bin" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}" COMPONENT libraries)
 install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/cfg" DESTINATION "${PACK_INSTALL_PREFIX_CUR_VER}" 
-COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
+	COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
 install(FILES ${CMAKE_BINARY_DIR}/shell.ini DESTINATION ${RVC_CONFIG_PATH} COMPONENT scripts)
 set(active_txt_file "${CMAKE_BINARY_DIR}/active.txt")
 file(WRITE ${active_txt_file} "${RVC_VERSION}")
-#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_VERSION_DIR_PATH})")
-#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${active_txt_file} ${OUTPUT_VERSION_DIR_PATH}/active.txt   )")
-
 install(FILES ${active_txt_file} DESTINATION ${PACK_INSTALL_PREFIX_VERSION} COMPONENT scripts)
+# Actually, this directory only has root.ini for now.
 install(DIRECTORY "${CMAKE_SOURCE_DIR}/addin/hardwarecfg" DESTINATION "${PACK_INSTALL_RUN_DIR}" 
 	COMPONENT scripts FILES_MATCHING PATTERN "*.ini")
 if(MSVC)
 	file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.vbs")
 	install(FILES "${CMAKE_SOURCE_DIR}/test/rvc_test.bat" DESTINATION ${OUTPUT_CUR_DISK_PATH}  COMPONENT scripts)
-	install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.win32" 
-		DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg" 
-		RENAME "root.ini"
-		COMPONENT scripts)
+	# set(ROOT_CONFIG_FILE_PATH "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.win32")
 else(MSVC)
 	file(GLOB BAT_SCRIPTS "${CMAKE_SOURCE_DIR}/addin/startup_scripts/*.sh")
-	install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.unix" 
-		DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg" 
-		RENAME "root.ini"
-		COMPONENT scripts)
+	# set(ROOT_CONFIG_FILE_PATH "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/root.ini.unix")
 endif(MSVC)
+install(FILES "${CMAKE_SOURCE_DIR}/addin/hardwarecfg/${ROOT_INI_NAME}" 
+	DESTINATION "${PACK_INSTALL_RUN_DIR}/hardwarecfg" 
+	RENAME "root.ini"
+	COMPONENT scripts)
+install(PROGRAMS ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
+
+#appoint the component to install , except header file here.
+GET_CMAKE_PROPERTY(PACK_COMPONENTS_ALL  COMPONENTS)
+FOREACH(item ${PACK_COMPONENTS_ALL})
+message(STATUS "compoent: ${item}")
+ENDFOREACH()
+list(REMOVE_ITEM PACK_COMPONENTS_ALL  "headers" "tools" "symbols")
+set(CPACK_COMPONENTS_ALL ${PACK_COMPONENTS_ALL})
 
-install(FILES ${BAT_SCRIPTS} DESTINATION "${PACK_INSTALL_PREFIX_VERSION}" COMPONENT scripts)
-
+include(CPack)
 
+#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_VERSION_DIR_PATH})")
+#install(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${active_txt_file} ${OUTPUT_VERSION_DIR_PATH}/active.txt   )")
 
 # if necessary
 # install(DIRECTORY ${CMAKE_SOURCE_DIR}/addin/mod DESTINATION ${RVC_MODULE_PATH} COMPONENT modules)

+ 0 - 0
addin/din/MetroWatcher64.exe → addin/din/win/MetroWatcher64.exe


+ 2 - 4
libtoolkit/CMakeLists.txt

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