Jelajahi Sumber

T19N0301 #comment 添加版本信息

gifur 6 tahun lalu
induk
melakukan
a2350e0a1a

+ 125 - 0
CMakeLists.txt

@@ -31,11 +31,46 @@ set(CMAKE_CXX_STANDARD 11)
 
 option(BUILD_TESTING "Build the project tests." ON)
 
+set(BUILD_NUMBER 0)
+if ($ENV{BUILD_NUMBER})
+	set(BUILD_NUMBER $ENV{BUILD_NUMBER})
+endif()
+
+set(RVC_COMPANY "CMB" CACHE STRING "China Merchants Bank")
+set(RVC_PRODUCT "VTM")
+set(RVC_AUTHOR "CCDG")
+set(RVC_COPYRIGHT "Copyright (C) 2020")
+set(RVC_DESCRIPTION "2020.01")
+
+set(RAW_VERSION_STRING "0.0.1-dev1")
+
+string(STRIP ${RAW_VERSION_STRING} RAW_VERSION_STRING)
+
+set(VERSION_REGEX "^.?([0-9]+)\\.([0-9]+)\\.([0-9]+)-?(.*)")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\1" RVC_VERSION_MAJOR "${RAW_VERSION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\2" RVC_VERSION_MINOR "${RAW_VERSION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\3" RVC_VERSION_REVISION "${RAW_VERSION_STRING}")
+string(REGEX REPLACE "${VERSION_REGEX}" "\\4" RVC_VERSION_SUFFIX "${RAW_VERSION_STRING}")
+
+set(RVC_VERSION_BUILD "${BUILD_NUMBER}")
+set(RVC_API_VERSION "${RVC_VERSION_MAJOR}")
+set(RVC_VERSION "${RVC_VERSION_MAJOR}.${RVC_VERSION_MINOR}.${RVC_VERSION_REVISION}.${RVC_VERSION_BUILD}")
+if (RVC_VERSION_SUFFIX)
+	set(RVC_VERSION_FULL "${RVC_VERSION}-${RVC_VERSION_SUFFIX}")
+else()
+	set(RVC_VERSION_FULL "${RVC_VERSION}")
+endif()
+message("RVC_VERSION=${RVC_VERSION_FULL}")
+
+configure_file("${PROJECT_SOURCE_DIR}/version.h.in" "${PROJECT_BINARY_DIR}/version.h")
+include_directories(${PROJECT_BINARY_DIR})
+
 if(BUILD_TESTING)
 	include(CTest)
 	message(STATUS "build the tests.")
 	enable_testing()
 	set(GTEST_ROOT "${CMAKE_SOURCE_DIR}/third_party/gtest/googletest/include")
+	set(GMOCK_ROOT "${CMAKE_SOURCE_DIR}/third_party/gtest/googlemock/include")
 	if(MSVC)
 		set(TESTING_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
 	else()
@@ -43,6 +78,7 @@ if(BUILD_TESTING)
 	endif()
 endif()
 
+# specifies what build type (configuration) will be built in this build tree
 if(NOT CMAKE_BUILD_TYPE)
 	set(CMAKE_BUILD_TYPE "Debug")
 endif()
@@ -50,6 +86,47 @@ endif()
 # Turn on solution folders (2.8.4+)
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
 
+set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install")
+# 如果使用绝对路径,会导致 CPack 因 CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION 失败
+# set(RVC_INCLUDE_PATH "${CMAKE_INSTALL_PREFIX}/include")
+# set(RVC_LIBRARY_PATH "${CMAKE_INSTALL_LIBDIR}")
+# set(RVC_RUNTIME_PATH "${CMAKE_INSTALL_BINDIR}")
+# set(RVC_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}/bin")
+
+set(RVC_INCLUDE_PATH "include")
+set(RVC_LIBRARY_PATH "lib")
+set(RVC_RUNTIME_PATH "bin")
+
+if (CMAKE_BUILD_TYPE STREQUAL Debug OR CMAKE_CONFIGURATION_TYPES STREQUAL Debug)
+	message(STATUS "debug type")
+endif()
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio*")
+	if(NOT CMAKE_GENERATOR_PLATFORM)
+		message(STATUS "set win32 platform default")
+		set(CMAKE_GENERATOR_PLATFORM "Win32")
+	else()
+		message(STATUS ${CMAKE_GENERATOR_PLATFORM})
+	endif()
+endif()
+
+set(CPACK_SYSTEM_NAME "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}")
+set(CPACK_TOPLEVEL_TAG "${CMAKE_SYSTEM_NAME}-${CMAKE_GENERATOR_PLATFORM}")
+
+if(WIN32)
+   # dll rc version
+	string(TIMESTAMP RC_VERSION_YEAR "%Y")
+	set(RC_VERSION_AUTHOR ${RVC_AUTHOR})
+	set(RC_VERSION_COMPANY ${RVC_COMPANY})
+	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(BUILD_SHARED_LIBS)
+	message(STATUS "build shared libs")
+endif(BUILD_SHARED_LIBS)
+
 include_directories(Common)
 add_subdirectory(third_party)
 add_subdirectory(libtoolkit)
@@ -62,4 +139,52 @@ if(BUILD_TESTING)
 	add_subdirectory(test)
 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)
+
+set(CPACK_SOURCE_IGNORE_FILES "/\\\\.git/;/\\\\.gitignore;/CMakeCache.txt")
+
+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")
+# 设置软件包版本
+set(CPACK_PACKAGE_VERSION ${RVC_VERSION_FULL})
+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)
+
+if(MSVC)
+	if( NOT CPACK_GENERATOR)
+		set(CPACK_GENERATOR "ZIP")
+		message(STATUS "set zip package file type")
+	endif()
+	if(CPACK_GENERATOR MATCHES "NSIS")
+		set(CPACK_PACKAGE_INSTALL_DIRECTORY "C:\\\\Run")
+	endif()
+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)
+		include(InstallRequiredSystemLibraries)
+		install(PROGRAMS ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS}
+			DESTINATION ${RVC_RUNTIME_PATH}
+			COMPONENT libraries)
+	else()
+		include(InstallRequiredSystemLibraries)
+	endif()
+endif()
+
+include(CPack)
+
 

TEMPAT SAMPAH
Common/Version.rc


+ 0 - 13
Common/version.h

@@ -1,13 +0,0 @@
-#pragma once
-
-// ÇëÌîдÕýÈ·µÄ°æ±¾ÐÅÏ¢
-#define VER_Major             1
-#define VER_Minor             7
-#define VER_Revision          0 
-#define VER_Build				  		0
-
-#define STR_Company		"CMB"
-#define STR_Author		"CCDG"
-#define STR_Product		"VTM"
-#define STR_Copyright		"Copyright (C) 2014-2016"
-#define STR_Description	"V1.7.0.0@2016.03"

+ 24 - 3
RVCComm/CMakeLists.txt

@@ -1,4 +1,6 @@
 #project(RvcCommon)
+set(MODULE_NAME "RVCComm")
+set(MODULE_PREFIX "RVCCOMM")
 
 if(MSVC)
 	add_definitions(-DRVCCOMM_EXPORTS)
@@ -7,7 +9,7 @@ endif(MSVC)
 message(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
 include_directories(${PROJECT_SOURCE_DIR}/third_party/openssl-1.1.1d/include/openssl)
 
-SET(RVC_COMM_SRCS 
+SET(${MODULE_PREFIX}_SRCS 
 	ClientComm.cpp 
 	ClientComm.h 
 	Package.cpp 
@@ -20,9 +22,28 @@ SET(RVC_COMM_SRCS
 	XZip.cpp 
 	XZip.h)
 
-add_library(RVCComm SHARED ${RVC_COMM_SRCS})
+if (WIN32)
+  set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
+  set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
+  set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
 
+  configure_file(
+    ${CMAKE_SOURCE_DIR}/Version.rc.in
+    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
+    @ONLY)
 
+  set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+endif()
 
+add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
+target_link_libraries(${MODULE_NAME} ssl)
 
-target_link_libraries(RVCComm ssl)
+if (BUILD_TESTING)
+	add_subdirectory(test)
+endif()
+
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+	COMPONENT libraries)

+ 32 - 0
RVCComm/test/CMakeLists.txt

@@ -0,0 +1,32 @@
+set(MODULE_NAME "test_rvccomm")
+set(MODULE_PREFIX "TEST_RVCCOMM")
+
+include_directories(..)
+set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.cpp)
+set(${MODULE_PREFIX}_TEST_DEFINITIONS "")
+set(${MODULE_PREFIX}_TESTS
+	ClientCommTest.cpp
+	)
+
+#Google Test
+include_directories(${GTEST_ROOT})
+include_directories(${GMOCK_ROOT})
+list(APPEND comm_test_libraries gtest)
+list(APPEND comm_test_libraries gtest_main)
+list(APPEND comm_test_libraries RVCComm)
+
+list(APPEND addin_libs gmock)
+list(APPEND addin_libs gmock_main)
+
+foreach(test ${${MODULE_PREFIX}_TESTS})
+	get_filename_component(test_name ${test} NAME_WE)
+	add_executable(${test_name} ${test})
+	target_link_libraries(${test_name} ${comm_test_libraries} ${addin_libs})
+	set_property(TARGET ${test_name} PROPERTY FOLDER "test/rvccomm")
+	# 会将 测试的执行程序生成在指定的文件夹,并且带上编译的配置条件比如 Debug
+	set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
+
+	add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${test_name})
+	set_tests_properties(${teset_name} PROPERTIES FAIL_REGULAR_EXPRESSION "FAILED;ERROR;Failed;error")
+endforeach()
+

+ 17 - 0
RVCComm/test/ClientCommTest.cpp

@@ -0,0 +1,17 @@
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+
+
+using testing::_;
+using testing::A;
+using testing::An;
+using testing::AnyNumber;
+using testing::Const;
+using testing::DoDefault;
+using testing::Eq;
+using testing::Lt;
+using testing::MockFunction;
+using testing::Ref;
+using testing::Return;
+using testing::ReturnRef;
+using testing::TypedEq;

+ 98 - 0
Version.rc.in

@@ -0,0 +1,98 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource1.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// 中文(简体,中国) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource1.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include ""winres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION @RC_VERSION_MAJOR@,@RC_VERSION_MINOR@,@RC_VERSION_BUILD@,@RC_VERSION_PATCH@
+ PRODUCTVERSION @RC_VERSION_MAJOR@,@RC_VERSION_MINOR@,@RC_VERSION_BUILD@,@RC_VERSION_PATCH@
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "080404b0"
+        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 "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@"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x804, 1200
+    END
+END
+
+#endif    // 中文(简体,中国) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

+ 32 - 4
libtoolkit/CMakeLists.txt

@@ -1,4 +1,6 @@
 #project(toolkit)
+set(MODULE_NAME "libtoolkit")
+set(MODULE_PREFIX "LIBTOOLKIT")
 
 
 
@@ -13,17 +15,43 @@ if(HAVE_DBGHELP)
 	message(STATUS "have dbghelp")
 endif(HAVE_DBGHELP)
 
-file(GLOB srcs "*.cpp" "*.h" "*.c")
+file(GLOB ${MODULE_PREFIX}_SRCS "*.cpp" "*.h" "*.c")
 
-add_library(libtoolkit SHARED ${srcs})
+# On windows create dll version information.
+if (WIN32)
+  set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
+  set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
+  set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
+
+  configure_file(
+    ${CMAKE_SOURCE_DIR}/Version.rc.in
+    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
+    @ONLY)
+
+  set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+endif()
+
+add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 if(MSVC)
-	target_link_libraries(libtoolkit dbghelp)
+	target_link_libraries(${MODULE_NAME} dbghelp)
 endif()
 
 
 if (BUILD_TESTING)
-	add_library(toolkit_a STATIC ${srcs})
+	add_library(toolkit_a STATIC ${${MODULE_PREFIX}_SRCS})
 	target_link_libraries(toolkit_a dbghelp)
 	add_subdirectory(test)
 endif()
 
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+    COMPONENT libraries)
+
+# install(TARGETS ${MODULE_NAME} DESTINATION "${RVC_RUNTIME_PATH}" COMPONENT libraries)
+
+
+file(GLOB PUBLIC_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/*.h")
+install( FILES ${PUBLIC_HEADERS} DESTINATION "include/${MODULE_NAME}" COMPONENT headers)
+

+ 1 - 1
libtoolkit/test/test_iobuffer.cpp

@@ -37,7 +37,7 @@ TEST(LibToolkitTest, IOBufferTest) {
 	iobuffer_read(iob, IOBUF_T_STR, NULL, &v);
 	str = (char*)malloc(v + 1);
 	iobuffer_read(iob, IOBUF_T_STR, str, NULL);
-	ASSERT_STREQ("abcd", str);
+	ASSERT_STREQ("abc", str);
 	free(str);
 	iobuffer_destroy(iob);
 }

+ 28 - 7
spbase/CMakeLists.txt

@@ -1,18 +1,39 @@
 #project(spbase)
+set(MODULE_NAME "spbase")
+set(MODULE_PREFIX "SPBASE")
 
-file(GLOB spbase_src RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h" "*.cpp" "*.c")
-list(REMOVE_ITEM spbase_src "SpVitualDevice.h" "SpVirtualDevice.cpp" "testInherits.cpp")
+file(GLOB ${MODULE_PREFIX}_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h" "*.cpp" "*.c")
+list(REMOVE_ITEM ${MODULE_PREFIX}_SRCS "SpVitualDevice.h" "SpVirtualDevice.cpp" "testInherits.cpp")
 
-add_library(spbase SHARED ${spbase_src})
+if (WIN32)
+  set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
+  set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
+  set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
 
-if(MSVC)
-	add_definitions(-DSPBASE_EXPORTS  -DSCEW_DLL)
-endif(MSVC)
+  configure_file(
+    ${CMAKE_SOURCE_DIR}/Version.rc.in
+    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
+    @ONLY)
+
+  set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+endif()
+
+if(WIN32)
+    add_definitions(-DSPBASE_EXPORTS  -DSCEW_DLL)
+endif(WIN32)
+
+add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS})
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Common)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../libtoolkit)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../third_party/scew/scew)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../third_party/scew/expat-2.1.0/lib)
 if(MSVC)
-	target_link_libraries(spbase psapi imagehlp ws2_32  libtoolkit RVCComm scew)
+	target_link_libraries(${MODULE_NAME} psapi imagehlp ws2_32  libtoolkit RVCComm scew)
 endif(MSVC)
+
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+    COMPONENT libraries)

+ 25 - 4
sphost/CMakeLists.txt

@@ -1,17 +1,38 @@
 #project(sphost)
+set(MODULE_NAME "sphost")
+set(MODULE_PREFIX "SPHOST")
 
-set(sphost_src
+set(${MODULE_PREFIX}_SRCS
 	modManage.cpp
 	sphost.c
 	spHostLog.cpp
 	sphostMonitor.cpp
 )
 
-list(APPEND sphost_src "../Common/precompile.c")
+list(APPEND ${MODULE_PREFIX}_SRCS "../Common/precompile.c")
 
 include_directories(${PROJECT_SOURCE_DIR}/spbase)
 include_directories(${PROJECT_SOURCE_DIR}/libtoolkit)
 
-add_executable(sphost ${sphost_src})
+if (WIN32)
+  set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
+  set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
+  set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
 
-target_link_libraries(sphost libtoolkit spbase)
+  configure_file(
+    ${CMAKE_SOURCE_DIR}/Version.rc.in
+    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
+    @ONLY)
+
+  set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+endif()
+
+add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
+
+target_link_libraries(${MODULE_NAME} libtoolkit spbase)
+
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+	COMPONENT libraries)

+ 24 - 5
spshell/CMakeLists.txt

@@ -1,6 +1,7 @@
-#project(spshell)
+set(MODULE_NAME "sphell")
+set(MODULE_PREFIX "SPHELL")
 
-set(sphell_srcs
+set(${MODULE_PREFIX}_SRCS
 	app.cpp
 	IOCPSocketServer.cpp
 	log.cpp
@@ -11,12 +12,30 @@ set(sphell_srcs
 	TelnetServer.cpp
 )
 
-message(STATUS "PROJECT_SOURCE_DIR: ${PROJECT_SOURCE_DIR}")
+if (WIN32)
+  set (RC_VERSION_MAJOR ${RVC_VERSION_MAJOR})
+  set (RC_VERSION_MINOR ${RVC_VERSION_MINOR})
+  set (RC_VERSION_BUILD ${RVC_VERSION_REVISION})
+
+  configure_file(
+    ${CMAKE_SOURCE_DIR}/Version.rc.in
+    ${CMAKE_CURRENT_BINARY_DIR}/version.rc
+    @ONLY)
+
+  set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
+endif()
+
 include_directories(${PROJECT_SOURCE_DIR}/spbase)
 include_directories(${PROJECT_SOURCE_DIR}/libtoolkit)
 
-add_executable(spshell ${sphell_srcs})
+add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
 
 if(MSVC)
-	target_link_libraries(spshell ws2_32 libtoolkit spbase)
+	target_link_libraries(${MODULE_NAME} ws2_32 libtoolkit spbase)
 endif()
+
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+	COMPONENT libraries)

+ 5 - 5
third_party/gtest/googletest/CMakeLists.txt

@@ -15,7 +15,7 @@ option(
   "Use shared (DLL) run-time lib even when Google Test is built as static lib."
   OFF)
 
-option(gtest_build_tests "Build all of gtest's own tests." OFF)
+option(gtest_BUILD_TESTINGs "Build all of gtest's own tests." OFF)
 
 option(gtest_build_samples "Build gtest's sample programs." OFF)
 
@@ -74,7 +74,7 @@ else()
 
   mark_as_advanced(
     gtest_force_shared_crt
-    gtest_build_tests
+    gtest_BUILD_TESTINGs
     gtest_build_samples
     gtest_disable_pthreads
     gtest_hide_internal_symbols)
@@ -174,10 +174,10 @@ endif()
 # Google Test itself.
 #
 # The tests are not built by default.  To build them, set the
-# gtest_build_tests option to ON.  You can do it by running ccmake
-# or specifying the -Dgtest_build_tests=ON flag when running cmake.
+# gtest_BUILD_TESTINGs option to ON.  You can do it by running ccmake
+# or specifying the -Dgtest_BUILD_TESTINGs=ON flag when running cmake.
 
-if (gtest_build_tests)
+if (gtest_BUILD_TESTINGs)
   # This must be set in the root directory for the tests to be run by
   # 'make test' or ctest.
   enable_testing()

+ 6 - 6
third_party/openssl-1.1.1d/CMakeLists.txt

@@ -11,7 +11,7 @@
 # in the Software without restriction, including without limitation the rights
 # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 # copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
+# furnished to do so, subject to the following ctallnditions:
 #
 # The above copyright notice and this permission notice shall be included in all
 # copies or substantial portions of the Software.
@@ -186,12 +186,12 @@ file( WRITE ${PROJECT_BINARY_DIR}/c_rehash "${C_REHASH}" )
 file( GLOB PUBLIC_HEADERS "${PROJECT_BINARY_DIR}/include/openssl/*.h" )
 install( FILES ${PUBLIC_HEADERS} DESTINATION include/openssl )
 
-install( FILES
-  ${PROJECT_BINARY_DIR}/c_rehash
-  FAQ LICENSE README README.ENGINE
-  DESTINATION share/openssl )
+  # install( FILES
+  # ${PROJECT_BINARY_DIR}/c_rehash
+  # FAQ LICENSE README README.ENGINE
+  #DESTINATION share/openssl )
 
-install( DIRECTORY doc DESTINATION share )
+# install( DIRECTORY doc DESTINATION share )
 
 # Generate the package target
 set( CPACK_GENERATOR ZIP TGZ )

+ 10 - 6
third_party/scew/CMakeLists.txt

@@ -1,4 +1,5 @@
-
+set(MODULE_NAME "scew")
+set(MODULE_PREFIX "SCEW")
 #set(current_version "1.1.7")
 
 set(scew_srcs 
@@ -56,10 +57,13 @@ add_subdirectory(expat-2.1.0)
 include_directories(expat-2.1.0/lib)
 
 
-add_library(scew SHARED ${scew_srcs})
-target_link_libraries(scew expat)
-
-set(RVC_INSTALL_INCLUDE_DIR include/thirdparty/scew)
+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_INSTALL_INCLUDE_DIR} COMPONENT headers)
+install(FILES ${scew_header} DESTINATION "${RVC_INCLUDE_PATH}/third_party/scew" COMPONENT headers)
+install(TARGETS ${MODULE_NAME} 
+    RUNTIME DESTINATION "${RVC_RUNTIME_PATH}"
+    ARCHIVE DESTINATION "${RVC_LIBRARY_PATH}"
+    LIBRARY DESTINATION "${RVC_LIBRARY_PATH}"
+	COMPONENT libraries)

+ 5 - 5
third_party/scew/expat-2.1.0/CMakeLists.txt

@@ -1,7 +1,7 @@
 # This file is copyrighted under the BSD-license for buildsystem files of KDE
 # copyright 2010, Patrick Spendrin <ps_ml@gmx.de>
 
-project(expat)
+# project(expat)
 
 cmake_minimum_required(VERSION 2.6)
 set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org")
@@ -10,7 +10,7 @@ set(PACKAGE_VERSION "2.1.0")
 set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
 set(PACKAGE_TARNAME "${PACKAGE_NAME}")
 
-option(BUILD_tools "build the xmlwf tool for expat library" ON)
+option(BUILD_tools "build the xmlwf tool for expat library" OFF)
 option(BUILD_examples "build the examples for expat library" OFF)
 option(BUILD_tests "build the tests for expat library" OFF)
 option(BUILD_shared "build a shared expat library" ON)
@@ -63,9 +63,9 @@ endif(BUILD_shared)
 
 add_library(expat ${_SHARED} ${expat_SRCS})
 
-install(TARGETS expat RUNTIME DESTINATION bin
-                      LIBRARY DESTINATION lib
-                      ARCHIVE DESTINATION lib)
+install(TARGETS expat RUNTIME DESTINATION ${RVC_RUNTIME_PATH}
+                      LIBRARY DESTINATION ${RVC_LIBRARY_PATH}
+                      ARCHIVE DESTINATION ${RVC_LIBRARY_PATH})
 
 set(prefix ${CMAKE_INSTALL_PREFIX})
 set(exec_prefix "\${prefix}/bin")

+ 12 - 0
version.h.in

@@ -0,0 +1,12 @@
+#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}"