浏览代码

Z991239-5240 #comment 新的判断VS2019方式实现

80374374 1 年之前
父节点
当前提交
4430a23d08

+ 19 - 0
DevAdapter/CMakeLists.txt

@@ -225,6 +225,25 @@ macro(rvc_aggereate_runtime_file)
     endif(RVC_INTEGRATE_BUILD)
 endmacro(rvc_aggereate_runtime_file)
 
+
+
+macro(rvc_set_win_dep_desc _prefix)
+
+	# On windows create dll version information.
+	if (WIN32 AND RVC_INTEGRATE_BUILD)
+	  set (RC_VERSION_MAJOR ${${_prefix}_VERSION})
+	  set (RC_VERSION_MINOR ${${_prefix}_BATCH})
+	  set (RC_VERSION_BUILD ${MSVC_TOOLSET_VERSION})
+	  set (RC_VERSION_PATCH ${MSVC_VERSION})
+	  configure_file(
+		${CMAKE_SOURCE_DIR}/version.rc.in
+		${CMAKE_CURRENT_BINARY_DIR}/version.rc
+		@ONLY)
+	  set ( ${_prefix}_SRCS ${${_prefix}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+	endif()
+
+endmacro(rvc_set_win_dep_desc)
+
 set(DEVADAPTER_CURRENT_INCLUDES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
 set(DEVADAPTER_CURRENT_ASSET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
 set(DEVADAPTER_CURRENT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/${DIFF_PLATFORM_SUB_DIR}")

+ 2 - 0
DevAdapter/cmbsz/FingerPrint.1.1/CMakeLists.txt

@@ -11,6 +11,8 @@ set(${MODULE_PREFIX}_SRCS SHARED
 	FingerPrint_Impl.cpp
 )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
+
 # 适配器工程需要通过此宏替代 add_library
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 2 - 0
DevAdapter/cmbsz/FingerPrint.7.1/CMakeLists.txt

@@ -11,6 +11,8 @@ set(${MODULE_PREFIX}_SRCS SHARED
 	FingerPrint_Impl.cpp
 )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
+
 # 适配器工程需要通过此宏替代 add_library
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 1 - 0
DevAdapter/cmbsz/cardissuer.1.1/CMakeLists.txt

@@ -7,6 +7,7 @@ set(${MODULE_PREFIX}_SRCS SHARED
         cardissuer_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 2 - 0
DevAdapter/cmbsz/cardswiper.1.1/CMakeLists.txt

@@ -11,6 +11,8 @@ set(${MODULE_PREFIX}_SRCS SHARED
         cardswiper_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
+
 # 适配器工程需要通过此宏替代 add_library
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 1 - 0
DevAdapter/cmbsz/contactlesscard.1.1/CMakeLists.txt

@@ -7,6 +7,7 @@ set(${MODULE_PREFIX}_SRCS SHARED
         contactless_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 1 - 0
DevAdapter/cmbsz/gpio.1.1/CMakeLists.txt

@@ -7,6 +7,7 @@ set(${MODULE_PREFIX}_SRCS SHARED
         gpio_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 1 - 0
DevAdapter/cmbsz/gpio.1.2/CMakeLists.txt

@@ -7,6 +7,7 @@ set(${MODULE_PREFIX}_SRCS SHARED
         gpio_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 1 - 0
DevAdapter/cmbsz/hspscanner.1.1/CMakeLists.txt

@@ -7,6 +7,7 @@ set(${MODULE_PREFIX}_SRCS SHARED
         hspscanner_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 1 - 0
DevAdapter/cmbsz/idcer.1.1/CMakeLists.txt

@@ -7,6 +7,7 @@ set(${MODULE_PREFIX}_SRCS SHARED
         idcer_impl.cpp
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
 
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 2 - 0
DevAdapter/cmbsz/pinpad.1.1/CMakeLists.txt

@@ -11,6 +11,8 @@ set(${MODULE_PREFIX}_SRCS SHARED
         pinpad_impl.cpp   
         )
 
+rvc_set_win_dep_desc(${MODULE_PREFIX})
+
 # 适配器工程需要通过此宏替代 add_library
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 

+ 17 - 0
DevAdapter/version.h.in

@@ -0,0 +1,17 @@
+#ifndef _RVC_SPBASE_VERSION_H__
+#define _RVC_SPBASE_VERSION_H__
+
+#pragma once
+
+#define VER_Major             @RVC_VERSION_MAJOR@
+#define VER_Minor             @RVC_VERSION_MINOR@
+#define VER_Revision         @RVC_VERSION_REVISION@ 
+#define VER_Build				@RVC_VERSION_BUILD@
+
+#define STR_Company		"${RVC_COMPANY}"
+#define STR_Author		    "${RVC_AUTHOR}"
+#define STR_Product		    "${RVC_PRODUCT}"
+#define STR_Copyright		"${RVC_COPYRIGHT}"
+#define STR_Description	    "${RVC_VERSION_FULL}@${RVC_DESCRIPTION}"
+
+#endif //_RVC_SPBASE_VERSION_H__

+ 11 - 35
Module/include/DevFSMCommBase.hpp

@@ -214,8 +214,12 @@ private:
 		}
 		/** Test Gifur@2024322]*/
 		GetDllVersionInfo(strFullLibPath, d1, d2, d3, d4);
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dll version: %d.%d.%d.%d", d1, d2, d3, d4);
-
+		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("dll %s version: %d.%d.%d.%d", strFullLibPath.GetData(), d1, d2, d3, d4);
+		//VC16.0	[1920,1929]	VS2019	142
+		if (d4 >= 1920 && d4 <= 1929 && d3 == 142) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("detect it built with VS2019, skip latter procedure, version: %d.%d.%d.%d", d1, d2, d3, d4);
+			return result;
+		}
 		//do 
 		//{
 		//	toolkit_lib_t libHandle;
@@ -365,51 +369,25 @@ public:
 #if defined(RVC_OS_WIN)
 	ErrorCodeEnum GetDllVersionInfo(LPCTSTR lpcszFilePath, DWORD& dwMajor, DWORD& dwMinor, DWORD& dwBuild, DWORD& dwRevision)
 	{
-		char VersionFilePath[MAX_PATH];
 		char* buf = NULL;
-
 		dwMajor = dwMinor = dwBuild = dwRevision = -1;
 
-		HMODULE h = GetModuleHandle(lpcszFilePath);
-		if (NULL == h) {
-			return Error_IO;
-		}
-
-		if (GetModuleFileName(h, VersionFilePath, MAX_PATH) == 0) {
-			CloseHandle(h);
-			return Error_Unexpect;
-		}
 		DWORD dwHnd;
 		DWORD dwVerInfoSize;
-		if (0 >= (dwVerInfoSize = GetFileVersionInfoSize(VersionFilePath, &dwHnd))) {
-			CloseHandle(h);
+		if (0 >= (dwVerInfoSize = GetFileVersionInfoSizeA(lpcszFilePath, &dwHnd))) {
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetFileVersionInfoSizeA failed: %u", GetLastError());
 			return Error_Unexpect;
 		}
 
 		buf = new char[dwVerInfoSize];
 		if (NULL == buf) {
-			CloseHandle(h);
 			return Error_Resource;
 		}
 
 		// get file version info
-		if (!GetFileVersionInfo(VersionFilePath, dwHnd, dwVerInfoSize, buf)) {
+		if (!GetFileVersionInfo(lpcszFilePath, dwHnd, dwVerInfoSize, buf)) {
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("GetFileVersionInfo failed: %u", GetLastError());
 			delete[] buf;
-			CloseHandle(h);
-			return Error_Unexpect;
-		}
-
-		// Read the list of languages and code pages.
-		struct LANGANDCODEPAGE
-		{
-			WORD    wLanguage;
-			WORD    wCodePage;
-		}*lpTranslate;
-
-		unsigned int cbTranslate;
-		if (!VerQueryValue(buf, "\\VarFileInfo\\Translation", (void**)&lpTranslate, &cbTranslate)) {
-			delete[] buf;
-			CloseHandle(h);
 			return Error_Unexpect;
 		}
 
@@ -417,8 +395,8 @@ public:
 		VS_FIXEDFILEINFO* ptrVersion;
 		unsigned int versionLen = 0;
 		if (!VerQueryValue(buf, "\\", (void**)&ptrVersion, &versionLen)) {
+			DbgWithLink(LOG_LEVEL_ERROR, LOG_TYPE_SYSTEM)("VS_FIXEDFILEINFO failed: %u", GetLastError());
 			delete[] buf;
-			CloseHandle(h);
 			return Error_Unexpect;
 		}
 
@@ -428,8 +406,6 @@ public:
 		dwRevision = ptrVersion->dwFileVersionLS & 0x0000FFFF;
 
 		delete[] buf;
-		CloseHandle(h);
-
 		return Error_Succeed;
 	}
 #else