Explorar o código

T19N0301 #comment 解决scew编译失败的问题

80374374 %!s(int64=5) %!d(string=hai) anos
pai
achega
226ebe531b

+ 38 - 5
CMakeLists.txt

@@ -1,22 +1,55 @@
+#
+# This is a CMake makefile.  CMake is a tool that helps you build C++ programs.
+# You can download CMake from http://www.cmake.org.  This CMakeLists.txt file
+# you are reading builds dlib's example programs. 
+#
+# To compile this program all you need to do is ask cmake.  You would type
+# these commands from within the directory containing this CMakeLists.txt
+# file:
+#   mkdir build
+#   cd build
+#   cmake ..
+#   cmake --build . --config Release
+#
+# 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_minimum_required (VERSION 3.8)
 
 project(RvcFramework)
 
 set(CMAKE_CXX_STANDARD 11)
 
-option(BUILD_TEST "Build the project tests." ON)
+option(BUILD_TESTING "Build the project tests." ON)
 
-if(BUILD_TEST)
+if(BUILD_TESTING)
+	include(CTest)
 	message(STATUS "build the tests.")
 	enable_testing()
 	set(GTEST_ROOT "${CMAKE_SOURCE_DIR}/third_party/gtest/googletest/include")
 	if(MSVC)
-		set(TEST_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
+		set(TESTING_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
 	else()
-		set(TEST_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/test")
+		set(TESTING_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/Testing")
 	endif()
 endif()
 
+if(NOT CMAKE_BUILD_TYPE)
+	set(CMAKE_BUILD_TYPE "Debug")
+endif()
+
+# Turn on solution folders (2.8.4+)
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+
 include_directories(Common)
 add_subdirectory(third_party)
 add_subdirectory(libtoolkit)
@@ -25,7 +58,7 @@ add_subdirectory(spbase)
 add_subdirectory(spshell)
 add_subdirectory(sphost)
 
-if(BUILD_TEST)
+if(BUILD_TESTING)
 	add_subdirectory(test)
 endif()
 

+ 15 - 4
RVCComm/CMakeLists.txt

@@ -4,10 +4,21 @@ if(MSVC)
 	add_definitions(-DRVCCOMM_EXPORTS)
 endif(MSVC)
 
-message(STATUS "PROJECT_BINARY_DIR: ${PROJECT_BINARY_DIR}")
-include_directories(${PROJECT_BINARY_DIR}/thirdparty/openssl-1.1.1d/include/openssl)
-
-SET(RVC_COMM_SRCS ClientComm.cpp ClientComm.h Package.cpp Package.h RVCComm.cpp StdAfx.cpp StdAfx.h XUnzip.cpp XUnzip.h XZip.cpp XZip.h)
+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 
+	ClientComm.cpp 
+	ClientComm.h 
+	Package.cpp 
+	Package.h 
+	RVCComm.cpp 
+	StdAfx.cpp 
+	StdAfx.h 
+	XUnzip.cpp 
+	XUnzip.h 
+	XZip.cpp 
+	XZip.h)
 
 add_library(RVCComm SHARED ${RVC_COMM_SRCS})
 

+ 4 - 4
libtoolkit/CMakeLists.txt

@@ -10,18 +10,18 @@ include(CheckLibraryExists)
 check_library_exists (dbghelp UnDecorateSymbolName "" HAVE_DBGHELP)
 
 if(HAVE_DBGHELP)
-	mesage(STATUS "have dbghelp")
+	message(STATUS "have dbghelp")
 endif(HAVE_DBGHELP)
 
 file(GLOB srcs "*.cpp" "*.h" "*.c")
 
-add_library(toolkit SHARED ${srcs})
+add_library(libtoolkit SHARED ${srcs})
 if(MSVC)
-	target_link_libraries(toolkit dbghelp)
+	target_link_libraries(libtoolkit dbghelp)
 endif()
 
 
-if (BUILD_TEST)
+if (BUILD_TESTING)
 	add_library(toolkit_a STATIC ${srcs})
 	target_link_libraries(toolkit_a dbghelp)
 	add_subdirectory(test)

+ 28 - 17
libtoolkit/test/CMakeLists.txt

@@ -1,24 +1,34 @@
-set(MODULE_NAME "test_libtookit")
+set(MODULE_NAME "test_libtoolkit")
 set(MODULE_PREFIX "TEST_LIBTOOLKIT")
 
-include_directories(${GTEST_ROOT})
+include_directories(..)
 set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.cpp)
-
+set(${MODULE_PREFIX}_TEST_DEFINITIONS "")
 set(${MODULE_PREFIX}_TESTS
 	test_base64.cpp
 	test_iobuffer.cpp
 	)
 
+# CTest 
+#list(APPEND ${MODULE_PREFIX}_TEST_DEFINITIONS "-DTEST_WITH_CTEST")
 # Create a test driver and source list for building test programs.
-create_test_sourcelist(${MODULE_PREFIX}_SRCS #source list name
-	${${MODULE_PREFIX}_DRIVER} # driver name
-	${${MODULE_PREFIX}_TESTS}  # test list
-	)# EXTRA_INCLUDE include.h FUNCTION function.
-#add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
-#set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS}  gtest toolkit)
-#target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
-#set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TEST_OUTPUT_DIRECTORY}")
-
+#create_test_sourcelist(${MODULE_PREFIX}_SRCS #source list name
+#	${${MODULE_PREFIX}_DRIVER} # driver name
+#	${${MODULE_PREFIX}_TESTS}  # test list
+#	)# EXTRA_INCLUDE include.h FUNCTION function.
+# add_definitions(${${MODULE_PREFIX}_TEST_DEFINITIONS})
+# add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
+# set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} toolkit_a)
+# target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
+# set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
+# foreach(test ${${MODULE_PREFIX}_TESTS})
+# 	get_filename_component(test_name ${test} NAME_WE)
+# 	add_test(NAME ${test_name} COMMAND ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${test_name})
+# endforeach()
+# set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "test/libtookit")
+
+#Google Test
+include_directories(${GTEST_ROOT})
 list(APPEND comm_test_libraries gtest)
 list(APPEND comm_test_libraries gtest_main)
 list(APPEND comm_test_libraries toolkit_a)
@@ -26,11 +36,12 @@ list(APPEND comm_test_libraries toolkit_a)
 foreach(test ${${MODULE_PREFIX}_TESTS})
 	get_filename_component(test_name ${test} NAME_WE)
 	add_executable(${test_name} ${test})
-	#target_include_directories(${test_name} PUBLIC ${GTEST_ROOT})
 	target_link_libraries(${test_name} ${comm_test_libraries})
-	add_test(${test_name} ${TEST_OUTPUT_DIRECTORY}/${MODULE_NAME} ${test_name})
-endforeach()
-
-#set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "test/libtookit")
+	set_property(TARGET ${test_name} PROPERTY FOLDER "test/libtoolkit")
+	# 会将 测试的执行程序生成在指定的文件夹,并且带上编译的配置条件比如 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()
 

+ 19 - 3
libtoolkit/test/test_base64.cpp

@@ -1,8 +1,24 @@
+#include "base64.h"
+#ifdef TEST_WITH_CTEST
+
+int test_base64(int argc, char* argv[])
+{
+	return 0;
+}
+
+#else
+
 #include <gtest/gtest.h>
-#include "..\base64.h"
 
 TEST(LibToolkitTest, Base64Test)
 {
 	char sz_encode[128] = { '\0' };
-	EXPECT_TRUE(base64_encode(sz_encode, "hellohellohello", strlen("hellohellohello")) == 0);
-}
+	char sz_decode[128] = { '\0' };
+	char sz_plain[] = "hellohellohello";
+	EXPECT_TRUE(base64_encode(sz_encode, sz_plain, strlen(sz_plain)) > 0);
+	EXPECT_TRUE(base64_decode(sz_decode, sz_encode) > 0);
+	EXPECT_STREQ(sz_decode, sz_plain);
+}
+#endif
+
+

+ 17 - 2
libtoolkit/test/test_iobuffer.cpp

@@ -1,5 +1,15 @@
+#include "iobuffer.h"
+
+#ifdef TEST_WITH_CTEST
+
+int test_iobuffer(int argc, char* argv[])
+{
+	return 0;
+}
+
+#else
+
 #include <gtest/gtest.h>
-#include "..\iobuffer.h"
 
 
 TEST(LibToolkitTest, IOBufferTest) {
@@ -27,9 +37,14 @@ 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("abc", str);
+	ASSERT_STREQ("abcd", str);
 	free(str);
 	iobuffer_destroy(iob);
 }
 
+#endif
+
+
+
+
 

+ 4 - 4
spbase/CMakeLists.txt

@@ -6,13 +6,13 @@ list(REMOVE_ITEM spbase_src "SpVitualDevice.h" "SpVirtualDevice.cpp" "testInheri
 add_library(spbase SHARED ${spbase_src})
 
 if(MSVC)
-add_definitions(-DSPBASE_EXPORTS  -DSCEW_DLL)
+	add_definitions(-DSPBASE_EXPORTS  -DSCEW_DLL)
 endif(MSVC)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../Common)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../libtoolkit)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/scew/scew)
-include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../thirdparty/scew/expat-2.1.0/lib)
+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  toolkit RVCComm scew)
+	target_link_libraries(spbase psapi imagehlp ws2_32  libtoolkit RVCComm scew)
 endif(MSVC)

+ 1 - 1
sphost/CMakeLists.txt

@@ -14,4 +14,4 @@ include_directories(${PROJECT_SOURCE_DIR}/libtoolkit)
 
 add_executable(sphost ${sphost_src})
 
-target_link_libraries(sphost toolkit spbase)
+target_link_libraries(sphost libtoolkit spbase)

+ 1 - 1
spshell/CMakeLists.txt

@@ -18,5 +18,5 @@ include_directories(${PROJECT_SOURCE_DIR}/libtoolkit)
 add_executable(spshell ${sphell_srcs})
 
 if(MSVC)
-	target_link_libraries(spshell ws2_32 toolkit spbase)
+	target_link_libraries(spshell ws2_32 libtoolkit spbase)
 endif()

+ 1 - 1
third_party/CMakeLists.txt

@@ -1,5 +1,5 @@
 add_subdirectory(scew)
-if(BUILD_TEST)
+if(BUILD_TESTING)
 	add_subdirectory(gtest)
 endif()
 add_subdirectory(openssl-1.1.1d)

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

@@ -33,7 +33,7 @@ set( CMAKE_DISABLE_IN_SOURCE_BUILD ON )
 
 set( CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" )
 
-option( WITH_APPS "Build applications" ON )
+option( WITH_APPS "Build applications" OFF )
 
 # OpenSSL version detection imported from FindOpenSSL.cmake
 

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

@@ -37,7 +37,7 @@ endif(BUILD_tests)
 
 include(ConfigureChecks.cmake)
 
-include_directories(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/lib)
+include_directories(${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib)
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 if(MSVC)
     add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)