Browse Source

Z991239-635 #comment feature: 优化厂商适配器目录的CMake脚本

gifur 5 years ago
parent
commit
47dc5f8ab9

+ 19 - 1
DevAdapter/CMakeLists.txt

@@ -66,6 +66,22 @@ macro(rvc_dev_target_install _target)
 
 endmacro(rvc_dev_target_install)
 
+macro(rvc_aggereate_runtime_file)
+
+if(RVC_INTEGRATE_BUILD)
+    set(TEMP_CURRENT_ASSET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
+    set(TEMP_CURRENT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/${DIFF_PLATFORM_SUB_DIR}")
+    set(TEMP_CURRENT_BIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/${DIFF_PLATFORM_SUB_DIR}")
+    # 添加如下内容用于收录 lib 下的 .so 库 或者 bin 下的 .dll 库 以及 资源文件
+    set(RVC_VENDOR_DEP_LIB_DIRS ${RVC_VENDOR_DEP_LIB_DIRS} 
+	    ${TEMP_CURRENT_BIN_DIR} ${TEMP_CURRENT_ASSET_DIR} PARENT_SCOPE)
+    if(NOT MSVC)
+	    set(RVC_VENDOR_DEP_LIB_DIRS ${RVC_VENDOR_DEP_LIB_DIRS} 
+		    ${TEMP_CURRENT_LIB_DIR} PARENT_SCOPE)
+    endif(NOT MSVC)
+endif(RVC_INTEGRATE_BUILD)
+
+endmacro(rvc_aggereate_runtime_file)
 
 set(DEVADAPTER_INCLUDES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include)
 include_directories(${DEVADAPTER_INCLUDES_DIR})
@@ -80,8 +96,10 @@ if(RVC_INTEGRATE_BUILD)
     foreach(dep_dir ${RVC_VENDOR_DEP_LIB_DIRS})
 	    message(STATUS "dep_dir: ${dep_dir}")
 	    file(GLOB RVC_DEP_BIN_FILES "${dep_dir}/*")
+        message(STATUS "before file: ${RVC_DEP_BIN_FILES}")
         list(FILTER RVC_DEP_BIN_FILES EXCLUDE REGEX ".*\.a$")
-	    install(PROGRAMS ${RVC_DEP_BIN_FILES} DESTINATION "${RVC_VENDOR_PATH}" COMPONENT libraries)
+        message(STATUS "after file: ${RVC_DEP_BIN_FILES}")
+	    install(PROGRAMS ${RVC_DEP_BIN_FILES} DESTINATION "${RVC_VENDOR_PATH}" COMPONENT devadapters)
     endforeach()
 endif(RVC_INTEGRATE_BUILD)
 

+ 5 - 0
DevAdapter/Readme.md

@@ -0,0 +1,5 @@
+* DeviceAdapter/CMakeLists.txt **不允许改动**
+
+* DeviceAdapter/include **文件夹内容不允许改动**,主要是我行提供的适配器头文件
+* `RVC_INTEGRATE_BUILD`用于判断是否处于我行集成编译环境,厂商在编写 CMakeLists.txt 文件时,对于一些输出逻辑的声明等,可以通过 `if(NOT RVC_INTEGRATE_BUILD)`来添加自己的逻辑
+* 其他注意事项请看模板内相关 CMakeLists.txt 的注释内容

+ 6 - 13
DevAdapter/cmbsz/CMakeLists.txt

@@ -4,27 +4,20 @@ project(cmbsz C CXX)
 
 set(CMAKE_COLOR_MAKEFILE ON)
 
-
 # 放置有源码的适配器依赖库工程文件
 set(VENDOR_CURRENT_DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/deps")
 set(VENDOR_CURRENT_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
+set(VENDOR_CURRENT_ASSET_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
 
 set(VENDOR_CURRENT_LIB_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/${DIFF_PLATFORM_SUB_DIR}")
 set(VENDOR_CURRENT_BIN_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/${DIFF_PLATFORM_SUB_DIR}")
 
 add_subdirectory(deps)
-add_subdirectory(pinpad)
-add_subdirectory(cardswiper)
-
-# 添加如下内容用于收录 lib 下的 .so 库 或者 bin 下的 .dll 库
-if(MSVC)
-	set(RVC_VENDOR_DEP_LIB_DIRS ${RVC_VENDOR_DEP_LIB_DIRS} 
-		${VENDOR_CURRENT_BIN_DIR} PARENT_SCOPE)
-else()
-	set(RVC_VENDOR_DEP_LIB_DIRS ${RVC_VENDOR_DEP_LIB_DIRS} 
-		${VENDOR_CURRENT_BIN_DIR} 
-		${VENDOR_CURRENT_LIB_DIR} PARENT_SCOPE)
-endif(MSVC)
+add_subdirectory(pinpad.1.1)
+add_subdirectory(cardswiper.1.1)
+
+#  =-=-=-=-=-=-=-=-=-= {VendorName}/CMakeLists.txt 文件最后必须声明如下内容=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
+rvc_aggereate_runtime_file()
 
 
 

+ 6 - 1
DevAdapter/cmbsz/cardswiper/CMakeLists.txt → DevAdapter/cmbsz/cardswiper.1.1/CMakeLists.txt

@@ -1,19 +1,24 @@
+# 声明模块名称的前缀和名称
 rvc_dev_define_module("CardSwiper")
 
+# rvc_dev_config_library 内需要使用这三个参数,用于拼接输出的适配器文件名称
 set(${MODULE_PREFIX}_VENDOR "cmbsz")
 set(${MODULE_PREFIX}_VERSION "1")
 set(${MODULE_PREFIX}_BATCH "1")
 
-# 包含要编译的实现文件
+# 包含要编译的实现文件,rvc_dev_config_library 内使用
 set(${MODULE_PREFIX}_SRCS SHARED
         cardswiper_impl.cpp
         )
 
+# 适配器工程需要通过此宏替代 add_library
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 
+# ${MODULE_FULL_NAME} 是 TAGET 名称,在 rvc_dev_config_library 中定义
 target_include_directories(${MODULE_FULL_NAME} PRIVATE "${VENDOR_CURRENT_INCLUDE_DIR}")
 target_link_directories(${MODULE_FULL_NAME} PRIVATE "${VENDOR_CURRENT_LIB_DIR}")
 
 target_link_libraries(${MODULE_FULL_NAME} demo)
 
+#  =-=-=-=-=-=-=-=-=-= {适配器工程}/CMakeLists.txt 文件最后必须声明如下内容=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
 rvc_dev_target_install(${MODULE_FULL_NAME})

+ 0 - 0
DevAdapter/cmbsz/cardswiper/cardswiper_impl.cpp → DevAdapter/cmbsz/cardswiper.1.1/cardswiper_impl.cpp


+ 0 - 0
DevAdapter/cmbsz/cardswiper/cardwiper_impl.h → DevAdapter/cmbsz/cardswiper.1.1/cardwiper_impl.h


+ 2 - 2
DevAdapter/cmbsz/deps/CMakeLists.txt

@@ -1,2 +1,2 @@
-add_subdirectory(sample_library)
-# add_subdirectory(demo_library)
+add_subdirectory(cmbsz.demo)
+add_subdirectory(cmbsz.sample)

+ 9 - 0
DevAdapter/cmbsz/deps/cmbsz.demo/CMakeLists.txt

@@ -0,0 +1,9 @@
+set(srcs demo.cpp demo.h)
+
+add_library(demo SHARED ${srcs})
+target_compile_definitions(demo PUBLIC -D DEMO_LIBRARY_EXPORTS)
+set_target_properties(demo PROPERTIES OUTPUT_NAME "cmbsz.demo")
+
+
+#  =-=-=-=-=-= {依赖库工程}/CMakeLists.txt 文件最后必须声明如下内容,传入TARGET 名称=-=-=-=-=-==-=-=
+rvc_dev_target_install(demo)

+ 0 - 0
DevAdapter/cmbsz/deps/demo_library/demo.cpp → DevAdapter/cmbsz/deps/cmbsz.demo/demo.cpp


+ 0 - 0
DevAdapter/cmbsz/deps/demo_library/demo.h → DevAdapter/cmbsz/deps/cmbsz.demo/demo.h


+ 11 - 0
DevAdapter/cmbsz/deps/cmbsz.sample/CMakeLists.txt

@@ -0,0 +1,11 @@
+
+
+set(srcs sample.cpp sample.h)
+
+add_library(sample SHARED ${srcs})
+target_compile_definitions(sample PUBLIC -D SAMPLE_LIBRARY_EXPORTS)
+set_target_properties(sample PROPERTIES OUTPUT_NAME "cmbsz.sample")
+
+
+#  =-=-=-=-=-= {依赖库工程}/CMakeLists.txt 文件最后必须声明如下内容,传入TARGET 名称=-=-=-=-=-==-=-=
+rvc_dev_target_install(sample)

+ 0 - 0
DevAdapter/cmbsz/deps/sample_library/sample.cpp → DevAdapter/cmbsz/deps/cmbsz.sample/sample.cpp


+ 0 - 0
DevAdapter/cmbsz/deps/sample_library/sample.h → DevAdapter/cmbsz/deps/cmbsz.sample/sample.h


+ 0 - 6
DevAdapter/cmbsz/deps/demo_library/CMakeLists.txt

@@ -1,6 +0,0 @@
-
-
-set(srcs demo.cpp demo.h)
-
-add_library(demo SHARED ${srcs})
-target_compile_definitions(demo PUBLIC -D DEMO_LIBRARY_EXPORTS)

+ 0 - 9
DevAdapter/cmbsz/deps/sample_library/CMakeLists.txt

@@ -1,9 +0,0 @@
-
-
-set(srcs sample.cpp sample.h)
-
-add_library(sample SHARED ${srcs})
-target_compile_definitions(sample PUBLIC -D SAMPLE_LIBRARY_EXPORTS)
-
-# 厂商的适配依赖库,如果以源码形式提供,需要加这行语句
-rvc_dev_target_install(sample)

+ 7 - 2
DevAdapter/cmbsz/pinpad/CMakeLists.txt → DevAdapter/cmbsz/pinpad.1.1/CMakeLists.txt

@@ -1,17 +1,22 @@
+# 声明模块名称的前缀和名称
 rvc_dev_define_module("PinPad")
 
+# rvc_dev_config_library 内需要使用这三个参数,用于拼接输出的适配器文件名称
 set(${MODULE_PREFIX}_VENDOR "cmbsz")
 set(${MODULE_PREFIX}_VERSION "1")
 set(${MODULE_PREFIX}_BATCH "1")
 
-# 包含要编译的实现文件
+# 包含要编译的实现文件,rvc_dev_config_library 内使用
 set(${MODULE_PREFIX}_SRCS SHARED
         pinpad_impl.cpp   
         )
 
+# 适配器工程需要通过此宏替代 add_library
 rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
 
-target_include_directories(${MODULE_FULL_NAME} PRIVATE "${VENDOR_CURRENT_DEPS_DIR}/sample_library")
+# ${MODULE_FULL_NAME} 是 TAGET 名称,在 rvc_dev_config_library 中定义
+target_include_directories(${MODULE_FULL_NAME} PRIVATE "${VENDOR_CURRENT_DEPS_DIR}/cmbsz.sample")
 target_link_libraries(${MODULE_FULL_NAME} sample)
 
+#  =-=-=-=-=-=-=-=-=-= {适配器工程}/CMakeLists.txt 文件最后必须声明如下内容=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
 rvc_dev_target_install(${MODULE_FULL_NAME})

+ 0 - 0
DevAdapter/cmbsz/pinpad/pinpad_impl.cpp → DevAdapter/cmbsz/pinpad.1.1/pinpad_impl.cpp


+ 0 - 0
DevAdapter/cmbsz/pinpad/pinpad_impl.h → DevAdapter/cmbsz/pinpad.1.1/pinpad_impl.h


+ 0 - 4
DevAdapter/include/CardSwiperClass.h

@@ -38,8 +38,6 @@ class CardSwiperClass : public DeviceBaseClass
 {
 
 public:
-#if DEVICE_BASE_INTERFACE_FILE_VERSION == 1
-
 	//
 	//	Connect to device and do initialization.
 	//	Make preparations for controlling the device.
@@ -49,8 +47,6 @@ public:
 	//
 	virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate) = 0;
 
-#endif // DEVICE_BASE_INTERFACE_FILE_VERSION == 1
-
 	//
 	//	Get card issuer status
 	//

+ 0 - 42
DevAdapter/include/DeviceBaseClass.h

@@ -103,19 +103,6 @@ class DeviceBaseClass
 {
 public:
 
-
-#if DEVICE_BASE_INTERFACE_FILE_VERSION == 2
-
-	//
-	// Open device.
-	// argNum indicates counts of argument for open device.
-	// argArray cotains the list of argument to open device need.
-	// Such as: argNum=2 and argArray[0] = "port=3", argArray[1] = "baudrate=125600". etc
-	//
-	virtual ErrorCodeEnum DevOpen(int argNum, char* argArray) = 0;
-
-#endif
-
 	//	
 	//	Get category infomation about device.
 	//
@@ -136,38 +123,9 @@ public:
 	virtual ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo) = 0;
 };
 
-#if DEVICE_BASE_INTERFACE_FILE_VERSION == 1
-
 DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DeviceBaseClass*& baseObj);
 DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass*& pBaseObj);
 
-#elif DEVICE_BASE_INTERFACE_FILE_VERSION == 2
-
-/*!
- * @brief Create specified device adapter implement object
- * @param[in]  
- *           dwDevClassID: class ID defined each device module interfece file.
- * @param[out]
- *           pOutDevAptObj: the device adapter object pointer created by vendor according with dwDevClassID, would be NULL normally.
- * @return : 
- *           if have not implement the device adapter object with dwDevClassID yet, return Error_NotSupport
- *           if create device adapter object succefully, the pOutDevAptObj must have valid value, and return Error_Succeed
- */
-DEVICEBASE_API ErrorCodeEnum  CreateDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pOutDevAptObj);
-
-/*!
- * @brief Do clean job and free the device adapter implement object created by CreateDevComponent
- * @param[in]  
- *          dwDevClassID: if 0, ignore it, do some clean job and free pInDevAptObj
- *          pInDevAptObj: the value equals with pOutDevAptObj at CreateDevComponent
- * @return : 
- *          if dwDevClassID is no-zero and cannot find the exist DeviceBaseClass object with dwDevClassID, return Error_NotExist.
- *          else return Error_Succeed normally.
- */
-DEVICEBASE_API ErrorCodeEnum  ReleaseDevComponent(DWORD dwDevClassID, DeviceBaseClass*& pInDevAptObj);
-
-#endif
-
 #ifdef __cplusplus
 }
 #endif

+ 0 - 4
DevAdapter/include/PinPadClass.h

@@ -112,8 +112,6 @@ class PinPadClass : public DeviceBaseClass
 
 public:
 
-#if DEVICE_BASE_INTERFACE_FILE_VERSION == 1
-
 	//
 	//	Open device.
 	//	Arguments:
@@ -122,8 +120,6 @@ public:
 	//
 	virtual ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate) = 0;
 
-#endif // DEVICE_BASE_INTERFACE_FILE_VERSION == 1
-
 	//
 	//	Get input key value.
 	//	Monitor pinpad key press,if any key pressed,set [ch] value and return Error_Succeed.