源文件 链接:https://github.com/egametang/ET/tree/master/Libs/Kcp
Win平台编译 修改CMake文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 cmake_minimum_required (VERSION 2.8 )if ( WIN32 AND NOT CYGWIN AND NOT ( CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" ) ) set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT" CACHE STRING "" ) set (CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd" CACHE STRING "" ) set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" CACHE STRING "" ) set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd" CACHE STRING "" ) endif ()set (CMAKE_C_COMPILER "gcc" )set (CMAKE_CXX_COMPILER "g++" )project (kcp)if ( IOS ) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fembed-bitcode" ) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fembed-bitcode" ) endif ()find_path (KCP_PROJECT_DIR NAMES SConstruct PATHS ${CMAKE_SOURCE_DIR} NO_DEFAULT_PATH ) MARK_AS_ADVANCED (KCP_PROJECT_DIR)set ( KCP_CORE ikcp.c ) macro (source_group_by_dir proj_dir source_files) if (MSVC OR APPLE) get_filename_component (sgbd_cur_dir ${proj_dir} ABSOLUTE) foreach (sgbd_file ${${source_files} }) get_filename_component (sgbd_abs_file ${sgbd_file} ABSOLUTE) file (RELATIVE_PATH sgbd_fpath ${sgbd_cur_dir} ${sgbd_abs_file} ) string (REGEX REPLACE "\(.*\)/.*" \\1 sgbd_group_name ${sgbd_fpath} ) string (COMPARE EQUAL ${sgbd_fpath} ${sgbd_group_name} sgbd_nogroup) string (REPLACE "/" "\\" sgbd_group_name ${sgbd_group_name} ) if (sgbd_nogroup) set (sgbd_group_name "\\" ) endif (sgbd_nogroup) source_group (${sgbd_group_name} FILES ${sgbd_file} ) endforeach (sgbd_file) endif (MSVC OR APPLE) endmacro (source_group_by_dir)source_group_by_dir(${CMAKE_CURRENT_SOURCE_DIR} KCP_CORE) if (APPLE) if (IOS) set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD)" ) add_library (kcp STATIC ${KCP_CORE} ) else () set (CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_64_BIT)" ) add_library (kcp MODULE ${KCP_CORE} ) set_target_properties ( kcp PROPERTIES BUNDLE TRUE ) endif () else ( ) add_library (kcp SHARED ${KCP_CORE} ) endif ( )if ( WIN32 AND NOT CYGWIN ) target_compile_definitions (kcp PRIVATE DLL_EXPORTS) endif ( )
make_win64.bat 1 2 3 4 5 6 7 8 9 mkdir build64 & pushd build64 cmake -G "Visual Studio 17 2022" -A x64 .. popd cmake --build build64 --config Release md Plugins\x86_64 copy /Y build64\Release\kcp.dll Plugins\x86_64\kcp.dll rmdir /S /Q build64 pause
make_win32.bat 1 2 3 4 5 6 7 8 9 mkdir build32 & pushd build32cmake -G "Visual Studio 17 2022" .. popd cmake --build build32 --config Release md Plugins\x86 copy /Y build32\Release\kcp.dll Plugins\x86\kcp.dll rmdir /S /Q build32pause
Android平台编译 Android.mk 1 2 3 4 5 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := kcp LOCAL_SRC_FILES := ikcp.c include $(BUILD_SHARED_LIBRARY)
Application.mk 1 2 3 4 5 APP_ABI:=all NDK_TOOLCHAIN_VERSION:=clang3.5 APP_STL:=system APP_OPTIM:= release APP_BUILD_SCRIPT := Android.mk
make_android.bat 1 2 3 4 5 6 set path=D:\soft\android-ndk-r10endk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk pause
make_android.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 if [ -z "$ANDROID_NDK " ]; then export ANDROID_NDK=~/android-ndk-r10e fi mkdir -p build_v7a && cd build_v7acmake -DANDROID_ABI=armeabi-v7a -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake -DANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang3.6 -DANDROID_NATIVE_API_LEVEL=android-9 ../ cd ..cmake --build build_v7a --config Release mkdir -p Plugins/Android/libs/armeabi-v7a/cp build_v7a/libkcp.so Plugins/Android/libs/armeabi-v7a/libkcp.sorm -rf build_v7amkdir -p build_x86 && cd build_x86cmake -DANDROID_ABI=x86 -DCMAKE_TOOLCHAIN_FILE=../cmake/android.toolchain.cmake -DANDROID_TOOLCHAIN_NAME=x86-clang3.5 -DANDROID_NATIVE_API_LEVEL=android-9 ../ cd ..cmake --build build_x86 --config Release mkdir -p Plugins/Android/libs/x86/cp build_x86/libkcp.so Plugins/Android/libs/x86/libkcp.sorm -rf build_x86
MAC/IOS平台编译 make_ios.sh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 mkdir -p build_ios && cd build_ioscmake -DCMAKE_TOOLCHAIN_FILE=../cmake/iOS.cmake -GXcode ../ cd ..cmake --build build_ios --config Release mkdir -p Plugins/iOS/exist_armv7=`lipo -info build_ios/Release-iphoneos/libkcp.a | grep armv7 | wc -l` exist_arm64=`lipo -info build_ios/Release-iphoneos/libkcp.a | grep arm64 | wc -l` if [ $[exist_armv7] -eq 0 ]; then echo "** ERROR **: No support for armv7, maybe XCode version is to high, use manual_build_ios instead!" elif [ $[exist_arm64] -eq 0 ]; then echo "** ERROR ** : No support for arm64, maybe XCode version is to high, use manual_build_ios instead!" else cp build_ios/Release-iphoneos/libkcp.a Plugins/iOS/libkcp.a rm -rf build_io fi
make_osx.sh 1 2 3 4 5 6 7 8 mkdir -p build_osx && cd build_osxcmake -GXcode ../ cd ..cmake --build build_osx --config Release mkdir -p Plugins/kcp.bundle/Contents/MacOS/cp build_osx/Release/kcp.bundle/Contents/MacOS/kcp Plugins/kcp.bundle/Contents/MacOS/kcprm -rf build_osx
待写,没有环境…
编译工程下载 编译工程点此下载