tanghai 14 лет назад
Родитель
Сommit
dfde615f2f

+ 4 - 4
Cpp/CMakeLists.txt

@@ -41,6 +41,8 @@ SET(Boost_USE_STATIC_RUNTIME OFF)
 INCLUDE_DIRECTORIES(${BOOST_INCLUDE_DIR})
 LINK_DIRECTORIES(${Boost_LIBRARY_DIR})
 
+FIND_PACKAGE(Mono REQUIRED)
+
 SET(ThirdPartyLibs
 	gtest
 	gmock
@@ -54,17 +56,15 @@ IF(PROFILE)
 	SET(ThirdPartyLibs ${ThirdPartyLibs} ${PERFTOOLS_PROFILE_LIBRARIES})
 ENDIF()
 
-MESSAGE(STATUS "${ThirdPartyLibs}")
-
 IF(MSVC)
-	SET(CMAKE_CXX_FLAGS_DEBUG "/MTd /Zi /WX /wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305 /wd4819")
+	SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Zi /WX /wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305 /wd4819")
 	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:libc.lib")
 	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:libcmt.lib")
 	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:msvcrt.lib")
 	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:libcd.lib")
 	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:msvcrtd.lib")
 	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:msvcprtd.lib")
-	ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB -D_WIN32_WINNT=0x0501)
+	ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB -D_WIN32_WINNT=0x0601)
 ENDIF()
 
 ADD_SUBDIRECTORY(Platform)

+ 17 - 0
Cpp/Cmake/FindMono.cmake

@@ -0,0 +1,17 @@
+FIND_PROGRAM(MONO_EXECUTABLE mono)
+FIND_PROGRAM(GMCS_EXECUTABLE gmcs)
+FIND_PROGRAM(GACUTIL_EXECUTABLE gacutil)
+
+SET(MONO_FOUND FALSE CACHE INTERNAL "")
+
+FIND_PACKAGE(PkgConfig)
+
+IF(PKG_CONFIG_FOUND)
+	EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --cflags mono-2 --variable=assemblies_dir OUTPUT_VARIABLE MONO_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+	EXECUTE_PROCESS(COMMAND ${PKG_CONFIG_EXECUTABLE} --libs mono-2 --variable=assemblies_dir OUTPUT_VARIABLE MONO_LINK_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
+ENDIF()
+
+MARK_AS_ADVANCED(MONO_EXECUTABLE GMCS_EXECUTABLE GACUTIL_EXECUTABLE MONO_CXX_FLAGS MONO_LINK_FLAGS)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(MONO DEFAULT_MSG MONO_EXECUTABLE GMCS_EXECUTABLE GACUTIL_EXECUTABLE MONO_CXX_FLAGS MONO_LINK_FLAGS)

+ 2 - 1
Cpp/Platform/CMakeLists.txt

@@ -1,2 +1,3 @@
 ADD_SUBDIRECTORY(Thread)
-ADD_SUBDIRECTORY(Rpc)
+ADD_SUBDIRECTORY(Rpc)
+ADD_SUBDIRECTORY(Mono)

+ 28 - 0
Cpp/Platform/Mono/CMakeLists.txt

@@ -0,0 +1,28 @@
+FILE(GLOB Header "*.h")
+
+SET(MonoSrc 
+	MonoInit.cc
+)
+
+ADD_LIBRARY(Mono ${MonoSrc})
+SET_PROPERTY(TARGET Rpc PROPERTY FOLDER "Platform")
+
+IF(UNIX)
+	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MONO_CXX_FLAGS}")
+	SET(CMAKE_LINK_LIBRARY_FLAG "${CMAKE_LINK_LIBRARY_FLAG} ${MONO_LINK_FLAGS}")
+ENDIF()
+
+ADD_EXECUTABLE(MonoInitTest MonoInitTest.cc)
+
+SET(Tests 
+	MonoInitTest
+)
+
+FOREACH(Test ${Tests})
+	TARGET_LINK_LIBRARIES(${Test}
+		Mono
+		${ThirdPartyLibs}
+	)
+	ADD_TEST(${Test} ${Test})
+	SET_PROPERTY(TARGET ${Test} PROPERTY FOLDER "Tests/Platform/Mono")
+ENDFOREACH()

+ 1 - 0
Cpp/Platform/Mono/MonoInit.h

@@ -5,6 +5,7 @@
 #define MONO_MONOINIT_H
 
 #include <string>
+#include <boost/unordered_map.hpp>
 #include <mono/jit/jit.h>
 #include <mono/metadata/assembly.h>
 

+ 27 - 1
Cpp/Platform/Mono/MonoInitTest.cc

@@ -1,8 +1,34 @@
 // Copyright: All Rights Reserved
 // Author: egametang@gmail.com (tanghai)
 
-#include "MonoInit.h"
+#include <gtest/gtest.h>
+#include "Mono/MonoInit.h"
 
 namespace Egametang {
 
+class MonoInitTest: public testing::Test
+{
+protected:
+	int port;
+
+public:
+	MonoInitTest(): port(10002)
+	{
+	}
+	virtual ~MonoInitTest()
+	{
+	}
+};
+
+TEST_F(MonoInitTest, Echo)
+{
+
+}
+
 } // namespace Egametang
+
+int main(int argc, char* argv[])
+{
+	testing::InitGoogleTest(&argc, argv);
+	return RUN_ALL_TESTS();
+}