浏览代码

T20L8071 #comment 通过install指令打包文件

gifur 5 年之前
父节点
当前提交
80cc979d8c

+ 32 - 2
CMakeLists.txt

@@ -91,7 +91,14 @@ endif()
 # Turn on solution folders (2.8.4+)
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
-set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
+# 在 Windows 下用 "/" 会报错
+STRING(REGEX REPLACE "^([A-Z]*.)([/\\].*)" "\\1" CURRENT_DISK "${CMAKE_CURRENT_SOURCE_DIR}")
+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}")
+
+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}")
@@ -101,7 +108,23 @@ set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install") # /${RVC_VERSION}
 set(RVC_INCLUDE_PATH "include")
 set(RVC_LIBRARY_PATH "lib")
 set(RVC_RUNTIME_PATH "bin")
-set(RVC_MODULE_LIBRARY_PATH "mod")
+# 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})
+		
+	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_VERSION_PATH}/${output_subdir}
+	)
+endmacro(copy_output_on_build)
 
 if (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
 	message(STATUS "debug type")
@@ -193,4 +216,11 @@ endif()
 
 include(CPack)
 
+function(package_static_libs output_library)
+	get_target_property(libtype ${output_library} TYPE)
+	if(NOT libtype STREQUAL "STATIC_LIBRARY" OR NOT libtype STREQUAL "EXECUTABLE ")
+		message(FATAL_ERROR "can only process static library or execuate program.")
+	endif()
+	get_target_property(libfile ${output_library} LOCATION)
+endfunction()
 

+ 2 - 2
Version.rc.in

@@ -69,10 +69,10 @@ BEGIN
             VALUE "AuthorName", "@RC_VERSION_AUTHOR@"
             VALUE "CompanyName", "@RC_VERSION_COMPANY@"
             VALUE "FileDescription", "@RC_VERSION_DESCRIPTION@"
-            VALUE "FileVersion", "@RC_VERSION_MAJOR@,@RC_VERSION_MINOR@,@RC_VERSION_BUILD@,@RC_VERSION_PATCH@"
+            VALUE "FileVersion", "@RC_VERSION_MAJOR@.@RC_VERSION_MINOR@.@RC_VERSION_BUILD@.@RC_VERSION_PATCH@"
             VALUE "LegalCopyright", "Copyright (C) 2019-@RC_VERSION_YEAR@"
             VALUE "ProductName", "@RC_VERSION_PRODUCT@"
-            VALUE "ProductVersion", "@RC_VERSION_MAJOR@,@RC_VERSION_MINOR@,@RC_VERSION_BUILD@,@RC_VERSION_PATCH@"
+            VALUE "ProductVersion", "@RC_VERSION_MAJOR@.@RC_VERSION_MINOR@.@RC_VERSION_BUILD@.@RC_VERSION_PATCH@"
         END
     END
     BLOCK "VarFileInfo"

+ 7 - 4
libtoolkit/test/CMakeLists.txt

@@ -4,10 +4,11 @@ set(MODULE_PREFIX "TEST_LIBTOOLKIT")
 include_directories(..)
 set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.cpp)
 set(${MODULE_PREFIX}_TEST_DEFINITIONS "")
-set(${MODULE_PREFIX}_TESTS
-	test_base64.cpp
-	test_iobuffer.cpp
-	)
+file(GLOB ${MODULE_PREFIX}_TESTS "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp")
+#set(${MODULE_PREFIX}_TESTS
+#	test_base64.cpp
+#	test_iobuffer.cpp
+#	)
 
 # CTest 
 #list(APPEND ${MODULE_PREFIX}_TEST_DEFINITIONS "-DTEST_WITH_CTEST")
@@ -33,6 +34,8 @@ list(APPEND comm_test_libraries gtest)
 list(APPEND comm_test_libraries gtest_main)
 list(APPEND comm_test_libraries libtoolkit_a)
 
+# set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
+
 foreach(test ${${MODULE_PREFIX}_TESTS})
 	get_filename_component(test_name ${test} NAME_WE)
 	add_executable(${test_name} ${test})

+ 11 - 0
spbase/test/SpBaseMiscTest.cpp

@@ -0,0 +1,11 @@
+#include "precompile.h"
+#include "CodeSignVerify.h"
+#include <gtest/gtest.h>
+
+TEST(SpBaseMisc, FileVersionTest)
+{
+	CCodeSignVerify ver;
+	CVersionInfo verInfo;
+	EXPECT_TRUE(ver.GetVersionInfo("Spshell.exe", verInfo));
+	EXPECT_TRUE(verInfo.FileVersion.IsValid());
+}

+ 1 - 1
spbase/test/SpSecureClientTest.cpp

@@ -93,7 +93,7 @@ TEST(SpSecureClientMockTest, SpSecureClientComm)
 
 	CMockEntity* entity = new CMockEntity();
 	ON_CALL(*entity, GetEntityName()).WillByDefault(Return("MockEntity"));
-	EXPECT_CALL(*entity, OnStarted()).Times(1);
+	//EXPECT_CALL(*entity, OnStarted()).Times(1);
 
 	client_comm_func_mock* comm_func_mock = new client_comm_func_mock();
 

+ 2 - 2
sphost/CMakeLists.txt

@@ -27,9 +27,9 @@ if (WIN32)
   set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
 endif()
 
-add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
-
+add_executable(${MODULE_NAME} WIN32 ${${MODULE_PREFIX}_SRCS})
 target_link_libraries(${MODULE_NAME} libtoolkit spbase)
+copy_output_on_build(${MODULE_NAME} bin)
 
 install(TARGETS ${MODULE_NAME} 
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"

+ 7 - 3
spshell/CMakeLists.txt

@@ -1,5 +1,5 @@
-set(MODULE_NAME "sphell")
-set(MODULE_PREFIX "SPHELL")
+set(MODULE_NAME "spshell")
+set(MODULE_PREFIX "SPSHELL")
 
 set(${MODULE_PREFIX}_SRCS
 	app.cpp
@@ -28,12 +28,16 @@ endif()
 include_directories(${PROJECT_SOURCE_DIR}/spbase)
 include_directories(${PROJECT_SOURCE_DIR}/libtoolkit)
 
-add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
+add_executable(${MODULE_NAME} WIN32 ${${MODULE_PREFIX}_SRCS})
 
 if(MSVC)
+    # ÉèÖÿØÖÆÌ¨²»ÏÔʾ
+    # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS")
 	target_link_libraries(${MODULE_NAME} ws2_32 libtoolkit spbase)
 endif()
 
+copy_output_on_build(${MODULE_NAME} bin)
+
 install(TARGETS ${MODULE_NAME} 
     RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
     ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"

+ 2 - 0
test/module/CMakeLists.txt

@@ -20,6 +20,8 @@ macro(add_module_libraries _module_prefix _module_name)
         set(${_module_prefix}_SRCS ${${_module_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
     endif(WIN32)
     add_library(${_module_name} SHARED ${${_module_prefix}_SRCS})
+    # ÉèÖù¤³ÌÊä³ö·¾¶
+    # set_target_properties(${_module_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${RVC_MODULE_LIBRARY_PATH}")
 endmacro(add_module_libraries)
 
 macro(deploy_module _module_prefix _module_name)