parent
7749b6448e
commit
40711cbf38
|
@ -1,88 +0,0 @@
|
||||||
# file: CMakeList.txt
|
|
||||||
cmake_minimum_required(VERSION 3.0)
|
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET iOS)
|
|
||||||
|
|
||||||
set(TMP $ENV{HUATUO_IL2CPP_SOURCE_DIR})
|
|
||||||
if ( NOT TMP )
|
|
||||||
message(FATAL_ERROR "需要设置环境变量: HUATUO_IL2CPP_SOURCE_DIR")
|
|
||||||
else()
|
|
||||||
message(STATUS "unity il2cpp 路径为: ${TMP}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(SDK_VERSION $ENV{IPHONESIMULATOR_VERSION})
|
|
||||||
if ( SDK_VERSION )
|
|
||||||
message(STATUS "使用iPhoneSimulator版本:" ${SDK_VERSION})
|
|
||||||
else()
|
|
||||||
message(STATUS "当前使用默认版本的iPhoneSimulator,可以通过设置环境变量IPHONESIMULATOR_VERSION,指定版本")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
project(il2cpp)
|
|
||||||
execute_process(COMMAND sh gen_lump.sh ${PROJECT_BINARY_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
|
||||||
|
|
||||||
add_subdirectory(external)
|
|
||||||
add_subdirectory(objective)
|
|
||||||
|
|
||||||
|
|
||||||
set(IL2CPP_SOURCE_DIR $ENV{HUATUO_IL2CPP_SOURCE_DIR})
|
|
||||||
|
|
||||||
message(STATUS "il2cpp project, binary dir: " ${CMAKE_BINARY_DIR})
|
|
||||||
message(STATUS "il2cpp project, build dir: " ${PROJECT_BINARY_DIR})
|
|
||||||
message(STATUS "il2cpp project, il2cpp source dir: " ${IL2CPP_SOURCE_DIR})
|
|
||||||
|
|
||||||
|
|
||||||
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
||||||
find_program(CLANG_EXECUTABLE NAMES clang clang-7 clang-8 clang-9 clang-10)
|
|
||||||
if (NOT CLANG_EXECUTABLE)
|
|
||||||
message(FATAL_ERROR "Cannot find any clang executable.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
set(CMAKE_OSX_SYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDK_VERSION}.sdk)
|
|
||||||
|
|
||||||
#set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
||||||
set(CMAKE_CXX_COMPILER clang++)
|
|
||||||
set(CMAKE_C_COMPILER clang)
|
|
||||||
#add_compile_options(-x objective-c++)
|
|
||||||
|
|
||||||
# 以下命令为复制的Xcode生成中的命令
|
|
||||||
set(CMAKE_CXX_FLAGS "-target arm64-apple-ios11.0 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++1z -fmodules -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fmodules-ignore-macro=IL2CPP_TARGET_IOS=1 -fembed-bitcode -fmodules-ignore-macro=BASELIB_DYNAMICLIBRARY=1 -fmodules-ignore-macro=BASELIB_INLINE_NAMESPACE=il2cpp_baselib -fmodules-ignore-macro=AARCH64 -fmodules-ignore-macro=__aarch64__ -fmodules-ignore-macro=IL2CPP_SUPPORT_THREADS -fmodules-ignore-macro=IL2CPP_THREADS_PTHREAD -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -Os -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wquoted-include-in-framework-header -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DIL2CPP_TARGET_IOS=1 -isysroot ${CMAKE_OSX_SYSROOT} -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -g -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability ")
|
|
||||||
|
|
||||||
|
|
||||||
add_definitions(-DIL2CPP_TARGET_IOS=1)
|
|
||||||
add_definitions(-DBASELIB_DYNAMICLIBRARY=1)
|
|
||||||
add_definitions(-DBASELIB_INLINE_NAMESPACE=il2cpp_baselib)
|
|
||||||
add_definitions(-DAARCH64)
|
|
||||||
add_definitions(-D__aarch64__)
|
|
||||||
add_definitions(-DIL2CPP_SUPPORT_THREADS)
|
|
||||||
add_definitions(-DIL2CPP_THREADS_PTHREAD)
|
|
||||||
#add_definitions(-DCMAKE_C_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang)
|
|
||||||
#add_definitions(-DCMAKE_CXX_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++)
|
|
||||||
#add_definitions(-DIL2CPP_TARGET_DARWIN)
|
|
||||||
add_definitions(-DIL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO)
|
|
||||||
|
|
||||||
add_definitions(-MMD)
|
|
||||||
add_definitions(-MT dependencies)
|
|
||||||
|
|
||||||
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/libil2cpp/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/baselib/Include/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/bdwgc/include/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/baselib/Platforms/OSX/Include/)
|
|
||||||
|
|
||||||
# 修改为本机对应SDK路径
|
|
||||||
include_directories(SYSTEM /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/c++/v1)
|
|
||||||
include_directories(SYSTEM /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include)
|
|
||||||
|
|
||||||
aux_source_directory(${PROJECT_BINARY_DIR}/lump_cpp LUMP_SOURCE_LIST)
|
|
||||||
aux_source_directory(${IL2CPP_SOURCE_DIR}/libil2cpp LIBIL2CPP_SOURCE_LIST)
|
|
||||||
|
|
||||||
#find_library(zlib ${PROJECT_SOURCE_DIR}/external)
|
|
||||||
add_library(il2cpp_original STATIC ${LIBIL2CPP_SOURCE_LIST} ${LUMP_SOURCE_LIST})
|
|
||||||
add_dependencies(il2cpp_original external objective)
|
|
||||||
|
|
||||||
add_custom_command(TARGET il2cpp_original
|
|
||||||
POST_BUILD
|
|
||||||
COMMAND xcrun -r libtool -static -o libil2cpp.a libil2cpp_original.a external/libexternal.a objective/libobjective.a
|
|
||||||
COMMENT "post build this is command combine libil2cpp_original.a, libojjective.a and libzlib.a into libil2cpp"
|
|
||||||
)
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
export HUATUO_IL2CPP_SOURCE_DIR=$(pushd ../LocalIl2CppData-OSXEditor/il2cpp > /dev/null && pwd && popd > /dev/null)
|
|
||||||
export IPHONESIMULATOR_VERSION=
|
|
||||||
|
|
||||||
rm -rf build
|
|
||||||
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake -DCMAKE_SYSTEM_PROCESSOR=arm64 -DCMAKE_OSX_ARCHITECTURES=arm64 ..
|
|
||||||
make -j24
|
|
||||||
|
|
||||||
if [ -f "libil2cpp.a" ]
|
|
||||||
then
|
|
||||||
echo 'build succ'
|
|
||||||
else
|
|
||||||
echo "build fail"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
|
@ -1,47 +0,0 @@
|
||||||
# file: external/CMakeList.txt
|
|
||||||
cmake_minimum_required(VERSION 3.0)
|
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET iOS)
|
|
||||||
|
|
||||||
set(IL2CPP_SOURCE_DIR $ENV{HUATUO_IL2CPP_SOURCE_DIR})
|
|
||||||
set(SDK_VERSION $ENV{IPHONESIMULATOR_VERSION})
|
|
||||||
|
|
||||||
message(STATUS "external project, external source dir: " ${IL2CPP_SOURCE_DIR})
|
|
||||||
|
|
||||||
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
||||||
|
|
||||||
find_program(CLANG_EXECUTABLE NAMES clang clang-7 clang-8 clang-9 clang-10)
|
|
||||||
if (NOT CLANG_EXECUTABLE)
|
|
||||||
message(FATAL_ERROR "Cannot find any clang executable.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(CMAKE_OSX_SYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDK_VERSION}.sdk)
|
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
||||||
set(CMAKE_C_COMPILER clang)
|
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "-x c -target arm64-apple-ios11.0 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu11 -fmodules -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fmodules-ignore-macro=IL2CPP_TARGET_IOS=1 -fembed-bitcode -fmodules-ignore-macro=BASELIB_DYNAMICLIBRARY=1 -fmodules-ignore-macro=BASELIB_INLINE_NAMESPACE=il2cpp_baselib -fmodules-ignore-macro=AARCH64 -fmodules-ignore-macro=__aarch64__ -fmodules-ignore-macro=IL2CPP_SUPPORT_THREADS -fmodules-ignore-macro=IL2CPP_THREADS_PTHREAD -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -Os -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wquoted-include-in-framework-header -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -DIL2CPP_TARGET_IOS=1 -isysroot ${CMAKE_OSX_SYSROOT} -fstrict-aliasing -Wdeprecated-declarations -g -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wno-semicolon-before-method-body -Wunguarded-availability")
|
|
||||||
|
|
||||||
|
|
||||||
add_definitions(-DIL2CPP_TARGET_IOS=1)
|
|
||||||
add_definitions(-DBASELIB_DYNAMICLIBRARY=1)
|
|
||||||
add_definitions(-DBASELIB_INLINE_NAMESPACE=il2cpp_baselib)
|
|
||||||
add_definitions(-DAARCH64)
|
|
||||||
add_definitions(-D__aarch64__)
|
|
||||||
#add_definitions(-D__arm64__)
|
|
||||||
add_definitions(-DIL2CPP_SUPPORT_THREADS)
|
|
||||||
add_definitions(-DIL2CPP_THREADS_PTHREAD)
|
|
||||||
#add_definitions(-DCMAKE_C_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang)
|
|
||||||
#add_definitions(-DCMAKE_CXX_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++)
|
|
||||||
#add_definitions(-DIL2CPP_TARGET_DARWIN)
|
|
||||||
add_definitions(-DIL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO=0)
|
|
||||||
|
|
||||||
add_definitions(-MMD)
|
|
||||||
add_definitions(-MT dependencies)
|
|
||||||
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/baselib/Include/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/bdwgc/include/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/baselib/Platforms/OSX/Include/)
|
|
||||||
|
|
||||||
aux_source_directory(${IL2CPP_SOURCE_DIR}/external/zlib/ ZLIB_C_SOURCE_LIST)
|
|
||||||
add_library(external STATIC ${ZLIB_C_SOURCE_LIST})
|
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
echo '====================================================================='
|
|
||||||
echo 'gen lump'
|
|
||||||
echo '$HUATUO_IL2CPP_SOURCE_DIR='${HUATUO_IL2CPP_SOURCE_DIR} #/Applications/Unity/Unity.app/Contents/il2cpp/
|
|
||||||
|
|
||||||
GEN_SOURCE_DIR=$1
|
|
||||||
BASE_DIR=${HUATUO_IL2CPP_SOURCE_DIR}/libil2cpp
|
|
||||||
echo base dir: ${BASE_DIR}
|
|
||||||
echo " "
|
|
||||||
#BASE_DIR=${HUATUO_IL2CPP_SOURCE_DIR}/libil2cpp
|
|
||||||
function SearchCppFile()
|
|
||||||
{
|
|
||||||
for f in $(ls $1)
|
|
||||||
do
|
|
||||||
SUB_DIR=$1/$f
|
|
||||||
if [ -d ${SUB_DIR} ]; then
|
|
||||||
SearchCppFile ${SUB_DIR}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
CPP_FILE_NUM=`ls -l $1/ | grep "\.cpp$"|wc -l`
|
|
||||||
if (( ${CPP_FILE_NUM} > 0 ))
|
|
||||||
then
|
|
||||||
for f in $1/*.cpp
|
|
||||||
do
|
|
||||||
echo "#include \""$f"\"" >> ${OUTPUT_FILE_NAME}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
MM_FILE_NUM=`ls -l $1/ | grep "\.mm$"|wc -l`
|
|
||||||
if (( ${MM_FILE_NUM} > 0 ))
|
|
||||||
then
|
|
||||||
for f in $1/*.mm
|
|
||||||
do
|
|
||||||
echo "#include \""$f"\"" >> ${OBJECTIVE_FILE_NAME}
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
rm -rf "${GEN_SOURCE_DIR}"/lump_cpp
|
|
||||||
rm -rf "${GEN_SOURCE_DIR}"/lump_mm
|
|
||||||
mkdir "${GEN_SOURCE_DIR}"/lump_cpp
|
|
||||||
mkdir "${GEN_SOURCE_DIR}"/lump_mm
|
|
||||||
|
|
||||||
OBJECTIVE_FILE_NAME=${GEN_SOURCE_DIR}/lump_mm/lump_libil2cpp_ojective.mm
|
|
||||||
echo "#include \"${BASE_DIR}/il2cpp-config.h\"" > ${OBJECTIVE_FILE_NAME}
|
|
||||||
echo gen file: ${OBJECTIVE_FILE_NAME}
|
|
||||||
|
|
||||||
for FOLDER in hybridclr vm pch utils vm-utils codegen metadata os debugger mono gc icalls
|
|
||||||
do
|
|
||||||
OUTPUT_FILE_NAME=${GEN_SOURCE_DIR}/lump_cpp/lump_libil2cpp_${FOLDER}.cpp
|
|
||||||
echo "#include \"${BASE_DIR}/il2cpp-config.h\"" > ${OUTPUT_FILE_NAME}
|
|
||||||
if [ $FOLDER = hybridclr ] || [ $FOLDER = vm ]
|
|
||||||
then
|
|
||||||
echo "#include \"${BASE_DIR}/codegen/il2cpp-codegen.h\"" >> ${OUTPUT_FILE_NAME}
|
|
||||||
fi
|
|
||||||
SearchCppFile ${BASE_DIR}/${FOLDER}
|
|
||||||
echo gen file: ${OUTPUT_FILE_NAME}
|
|
||||||
done
|
|
||||||
|
|
||||||
echo gen done.
|
|
||||||
echo '====================================================================='
|
|
||||||
echo " "
|
|
||||||
|
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
# file: CMakeList.txt
|
|
||||||
cmake_minimum_required(VERSION 3.0)
|
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET iOS)
|
|
||||||
project(il2cpp)
|
|
||||||
|
|
||||||
set(IL2CPP_SOURCE_DIR $ENV{HUATUO_IL2CPP_SOURCE_DIR})
|
|
||||||
set(SDK_VERSION $ENV{IPHONESIMULATOR_VERSION})
|
|
||||||
|
|
||||||
message(STATUS "objective project, binary dir: " ${PROJECT_BINARY_DIR})
|
|
||||||
message(STATUS "objective project, il2cpp source dir: " ${PROJECT_SOURCE_DIR})
|
|
||||||
|
|
||||||
|
|
||||||
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
|
|
||||||
find_program(CLANG_EXECUTABLE NAMES clang clang-7 clang-8 clang-9 clang-10)
|
|
||||||
if (NOT CLANG_EXECUTABLE)
|
|
||||||
message(FATAL_ERROR "Cannot find any clang executable.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
set(CMAKE_OSX_SYSROOT /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator${SDK_VERSION}.sdk)
|
|
||||||
|
|
||||||
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
||||||
set(CMAKE_CXX_COMPILER clang++)
|
|
||||||
set(CMAKE_C_COMPILER clang)
|
|
||||||
#add_compile_options(-x objective-c++)
|
|
||||||
|
|
||||||
# 以下命令为复制的Xcode生成中的命令
|
|
||||||
set(CMAKE_CXX_FLAGS "-target arm64-apple-ios11.0 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu++1z -fmodules -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fmodules-ignore-macro=IL2CPP_TARGET_IOS=1 -fembed-bitcode -fmodules-ignore-macro=BASELIB_DYNAMICLIBRARY=1 -fmodules-ignore-macro=BASELIB_INLINE_NAMESPACE=il2cpp_baselib -fmodules-ignore-macro=AARCH64 -fmodules-ignore-macro=__aarch64__ -fmodules-ignore-macro=IL2CPP_SUPPORT_THREADS -fmodules-ignore-macro=IL2CPP_THREADS_PTHREAD -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -Os -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wquoted-include-in-framework-header -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-c++11-extensions -DIL2CPP_TARGET_IOS=1 -isysroot ${SDK_VERSION} -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -g -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability ")
|
|
||||||
|
|
||||||
|
|
||||||
add_definitions(-DIL2CPP_TARGET_IOS=1)
|
|
||||||
add_definitions(-DBASELIB_DYNAMICLIBRARY=1)
|
|
||||||
add_definitions(-DBASELIB_INLINE_NAMESPACE=il2cpp_baselib)
|
|
||||||
add_definitions(-DAARCH64)
|
|
||||||
add_definitions(-D__aarch64__)
|
|
||||||
add_definitions(-DIL2CPP_SUPPORT_THREADS)
|
|
||||||
add_definitions(-DIL2CPP_THREADS_PTHREAD)
|
|
||||||
#add_definitions(-DCMAKE_C_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang)
|
|
||||||
#add_definitions(-DCMAKE_CXX_COMPILER=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++)
|
|
||||||
#add_definitions(-DIL2CPP_TARGET_DARWIN)
|
|
||||||
add_definitions(-DIL2CPP_PLATFORM_SUPPORTS_TIMEZONEINFO)
|
|
||||||
|
|
||||||
add_definitions(-MMD)
|
|
||||||
add_definitions(-MT dependencies)
|
|
||||||
|
|
||||||
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/libil2cpp)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/baselib/Include/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/bdwgc/include/)
|
|
||||||
include_directories(${IL2CPP_SOURCE_DIR}/external/baselib/Platforms/OSX/Include/)
|
|
||||||
|
|
||||||
# 修改为本机对应SDK路径
|
|
||||||
include_directories(SYSTEM /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/c++/v1)
|
|
||||||
include_directories(SYSTEM /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include)
|
|
||||||
|
|
||||||
get_filename_component(PARENT_PATH ${PROJECT_BINARY_DIR} PATH)
|
|
||||||
aux_source_directory(${PARENT_PATH}/lump_mm LUMP_SOURCE_LIST)
|
|
||||||
|
|
||||||
#find_library(zlib ${PROJECT_SOURCE_DIR}/external)
|
|
||||||
add_library(objective STATIC ${LUMP_SOURCE_LIST})
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 59ab7ccacd9a9944bb9456da235d6760
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -0,0 +1,238 @@
|
||||||
|
using HybridCLR.Editor.Installer;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEditor;
|
||||||
|
#if (UNITY_2020 || UNITY_2021) && UNITY_IOS
|
||||||
|
using UnityEditor.Build;
|
||||||
|
using UnityEditor.Callbacks;
|
||||||
|
using UnityEditor.iOS.Xcode;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace HybridCLR.Editor
|
||||||
|
{
|
||||||
|
public static class AddLil2cppSourceCodeToXcodeproj2021OrOlder
|
||||||
|
{
|
||||||
|
//[MenuItem("Test/GenProj")]
|
||||||
|
//public static void Modify()
|
||||||
|
//{
|
||||||
|
// OnPostProcessBuild(BuildTarget.iOS, $"{SettingsUtil.ProjectDir}/Build-iOS");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//[MenuItem("Test/CreateLumps")]
|
||||||
|
//public static void CreateLumpsCmd()
|
||||||
|
//{
|
||||||
|
// CreateLumps($"{SettingsUtil.LocalIl2CppDir}/libil2cpp", $"{SettingsUtil.HybridCLRDataDir}/lumps");
|
||||||
|
//}
|
||||||
|
|
||||||
|
[PostProcessBuild]
|
||||||
|
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
|
||||||
|
{
|
||||||
|
if (target != BuildTarget.iOS)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. 生成lump,并且添加到工程
|
||||||
|
3. 将libil2cpp目录复制到 Library/. 删除旧的. search paths里修改 libil2cpp/include为libil2cpp
|
||||||
|
3. Libraries/bdwgc/include -> Libraries/external/bdwgc/include
|
||||||
|
4. 将external目录复制到 Library/external。删除旧目录
|
||||||
|
5. 将Library/external/baselib/Platforms/OSX改名为 IOS 全大写
|
||||||
|
6. 将 external/zlib下c 文件添加到工程
|
||||||
|
7. 移除libil2cpp.a
|
||||||
|
8. Include path add libil2cpp/os/ClassLibraryPAL/brotli/include
|
||||||
|
9. add external/xxHash
|
||||||
|
*/
|
||||||
|
|
||||||
|
string pbxprojFile = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj";
|
||||||
|
string srcLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp";
|
||||||
|
string dstLibil2cppDir = $"{pathToBuiltProject}/Libraries/libil2cpp";
|
||||||
|
string lumpDir = $"{pathToBuiltProject}/Libraries/lumps";
|
||||||
|
string srcExternalDir = $"{SettingsUtil.LocalIl2CppDir}/external";
|
||||||
|
string dstExternalDir = $"{pathToBuiltProject}/Libraries/external";
|
||||||
|
//RemoveExternalLibil2cppOption(srcExternalDir, dstExternalDir);
|
||||||
|
CopyLibil2cppToXcodeProj(srcLibil2cppDir, dstLibil2cppDir);
|
||||||
|
CopyExternalToXcodeProj(srcExternalDir, dstExternalDir);
|
||||||
|
var lumpFiles = CreateLumps(dstLibil2cppDir, lumpDir);
|
||||||
|
var extraSources = GetExtraSourceFiles(dstExternalDir);
|
||||||
|
var cflags = new List<string>()
|
||||||
|
{
|
||||||
|
"-DIL2CPP_MONO_DEBUGGER_DISABLED",
|
||||||
|
};
|
||||||
|
ModifyPBXProject(pathToBuiltProject, pbxprojFile, lumpFiles, extraSources, cflags);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ModifyPBXProject(string pathToBuiltProject, string pbxprojFile, List<LumpFile> lumpFiles, List<string> extraFiles, List<string> cflags)
|
||||||
|
{
|
||||||
|
var proj = new PBXProject();
|
||||||
|
proj.ReadFromFile(pbxprojFile);
|
||||||
|
string targetGUID = proj.GetUnityFrameworkTargetGuid();
|
||||||
|
// 移除旧的libil2cpp.a
|
||||||
|
var libil2cppGUID = proj.FindFileGuidByProjectPath("Libraries/libil2cpp.a");
|
||||||
|
if (!string.IsNullOrEmpty(libil2cppGUID))
|
||||||
|
{
|
||||||
|
proj.RemoveFileFromBuild(targetGUID, libil2cppGUID);
|
||||||
|
proj.RemoveFile(libil2cppGUID);
|
||||||
|
File.Delete(Path.Combine(pathToBuiltProject, "Libraries", "libil2cpp.a"));
|
||||||
|
}
|
||||||
|
|
||||||
|
//var lumpGroupGuid = proj.AddFile("Lumps", $"Classes/Lumps", PBXSourceTree.Group);
|
||||||
|
|
||||||
|
foreach (var lumpFile in lumpFiles)
|
||||||
|
{
|
||||||
|
string projPathOfFile = $"Classes/Lumps/{Path.GetFileName(lumpFile.lumpFile)}";
|
||||||
|
string lumpGuid = proj.FindFileGuidByProjectPath(projPathOfFile);
|
||||||
|
if (!string.IsNullOrEmpty(lumpGuid))
|
||||||
|
{
|
||||||
|
proj.RemoveFileFromBuild(targetGUID, lumpGuid);
|
||||||
|
proj.RemoveFile(lumpGuid);
|
||||||
|
}
|
||||||
|
lumpGuid = proj.AddFile(lumpFile.lumpFile, projPathOfFile, PBXSourceTree.Source);
|
||||||
|
proj.AddFileToBuild(targetGUID, lumpGuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var extraFile in extraFiles)
|
||||||
|
{
|
||||||
|
string projPathOfFile = $"Classes/Extrals/{Path.GetFileName(extraFile)}";
|
||||||
|
string extraFileGuid = proj.FindFileGuidByProjectPath(projPathOfFile);
|
||||||
|
if (!string.IsNullOrEmpty(extraFileGuid))
|
||||||
|
{
|
||||||
|
proj.RemoveFileFromBuild(targetGUID, extraFileGuid);
|
||||||
|
proj.RemoveFile(extraFileGuid);
|
||||||
|
//Debug.LogWarning($"remove exist extra file:{projPathOfFile} guid:{extraFileGuid}");
|
||||||
|
}
|
||||||
|
var lumpGuid = proj.AddFile(extraFile, projPathOfFile, PBXSourceTree.Source);
|
||||||
|
proj.AddFileToBuild(targetGUID, lumpGuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(var configName in proj.BuildConfigNames())
|
||||||
|
{
|
||||||
|
//Debug.Log($"build config:{bcn}");
|
||||||
|
string configGuid = proj.BuildConfigByName(targetGUID, configName);
|
||||||
|
string headerSearchPaths = "HEADER_SEARCH_PATHS";
|
||||||
|
string hspProp = proj.GetBuildPropertyForConfig(configGuid, headerSearchPaths);
|
||||||
|
//Debug.Log($"config guid:{configGuid} prop:{hspProp}");
|
||||||
|
string newPro = hspProp.Replace("libil2cpp/include", "libil2cpp")
|
||||||
|
.Replace("Libraries/bdwgc", "Libraries/external/bdwgc");
|
||||||
|
|
||||||
|
if (!newPro.Contains("Libraries/libil2cpp/os/ClassLibraryPAL/brotli/include"))
|
||||||
|
{
|
||||||
|
newPro += " $(SRCROOT)/Libraries/libil2cpp/os/ClassLibraryPAL/brotli/include";
|
||||||
|
}
|
||||||
|
if (!newPro.Contains("Libraries/external/xxHash"))
|
||||||
|
{
|
||||||
|
newPro += " $(SRCROOT)/Libraries/external/xxHash";
|
||||||
|
}
|
||||||
|
//Debug.Log($"config:{bcn} new prop:{newPro}");
|
||||||
|
proj.SetBuildPropertyForConfig(configGuid, headerSearchPaths, newPro);
|
||||||
|
|
||||||
|
string cflagKey = "OTHER_CFLAGS";
|
||||||
|
string cfProp = proj.GetBuildPropertyForConfig(configGuid, cflagKey);
|
||||||
|
foreach (var flag in cflags)
|
||||||
|
{
|
||||||
|
if (!cfProp.Contains(flag))
|
||||||
|
{
|
||||||
|
cfProp += " " + flag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (configName.Contains("Debug") && !cfProp.Contains("-DIL2CPP_DEBUG="))
|
||||||
|
{
|
||||||
|
cfProp += " -DIL2CPP_DEBUG=1 -DDEBUG=1";
|
||||||
|
}
|
||||||
|
proj.SetBuildPropertyForConfig(configGuid, cflagKey, cfProp);
|
||||||
|
|
||||||
|
}
|
||||||
|
proj.WriteToFile(pbxprojFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CopyLibil2cppToXcodeProj(string srcLibil2cppDir, string dstLibil2cppDir)
|
||||||
|
{
|
||||||
|
BashUtil.RemoveDir(dstLibil2cppDir);
|
||||||
|
BashUtil.CopyDir(srcLibil2cppDir, dstLibil2cppDir, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void CopyExternalToXcodeProj(string srcExternalDir, string dstExternalDir)
|
||||||
|
{
|
||||||
|
BashUtil.RemoveDir(dstExternalDir);
|
||||||
|
BashUtil.CopyDir(srcExternalDir, dstExternalDir, true);
|
||||||
|
|
||||||
|
string baselibPlatfromsDir = $"{dstExternalDir}/baselib/Platforms";
|
||||||
|
BashUtil.RemoveDir($"{baselibPlatfromsDir}/IOS");
|
||||||
|
BashUtil.CopyDir($"{baselibPlatfromsDir}/OSX", $"{baselibPlatfromsDir}/IOS", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
class LumpFile
|
||||||
|
{
|
||||||
|
public List<string> cppFiles = new List<string>();
|
||||||
|
|
||||||
|
public readonly string lumpFile;
|
||||||
|
|
||||||
|
public readonly string il2cppConfigFile;
|
||||||
|
|
||||||
|
public LumpFile(string lumpFile, string il2cppConfigFile)
|
||||||
|
{
|
||||||
|
this.lumpFile = lumpFile;
|
||||||
|
this.il2cppConfigFile = il2cppConfigFile;
|
||||||
|
this.cppFiles.Add(il2cppConfigFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveFile()
|
||||||
|
{
|
||||||
|
var lumpFileContent = new List<string>();
|
||||||
|
foreach (var file in cppFiles)
|
||||||
|
{
|
||||||
|
lumpFileContent.Add($"#include \"{file}\"");
|
||||||
|
}
|
||||||
|
File.WriteAllLines(lumpFile, lumpFileContent, Encoding.UTF8);
|
||||||
|
Debug.Log($"create lump file:{lumpFile}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<LumpFile> CreateLumps(string libil2cppDir, string outputDir)
|
||||||
|
{
|
||||||
|
BashUtil.RecreateDir(outputDir);
|
||||||
|
var cppFiles = Directory.GetFiles(libil2cppDir, "*.cpp", SearchOption.AllDirectories);
|
||||||
|
int maxCppFilePerLump = 50;
|
||||||
|
string il2cppConfigFile = $"{libil2cppDir}/il2cpp-config.h";
|
||||||
|
var lumpFiles = new List<LumpFile>();
|
||||||
|
for (int i = 0; i < (cppFiles.Length + maxCppFilePerLump - 1) / maxCppFilePerLump; i++)
|
||||||
|
{
|
||||||
|
var lumpFile = new LumpFile($"{outputDir}/lump_{i}.cpp", il2cppConfigFile);
|
||||||
|
for (int j = 0; j < maxCppFilePerLump; j++)
|
||||||
|
{
|
||||||
|
int index = i * maxCppFilePerLump + j;
|
||||||
|
if (index >= cppFiles.Length)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
lumpFile.cppFiles.Add(cppFiles[index]);
|
||||||
|
}
|
||||||
|
lumpFile.SaveFile();
|
||||||
|
lumpFiles.Add(lumpFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
var mmFiles = Directory.GetFiles(libil2cppDir, "*.mm", SearchOption.AllDirectories);
|
||||||
|
if (mmFiles.Length > 0)
|
||||||
|
{
|
||||||
|
var lumpFile = new LumpFile($"{outputDir}/lump_mm.mm", il2cppConfigFile);
|
||||||
|
foreach (var file in mmFiles)
|
||||||
|
{
|
||||||
|
lumpFile.cppFiles.Add(file);
|
||||||
|
}
|
||||||
|
lumpFile.SaveFile();
|
||||||
|
lumpFiles.Add(lumpFile);
|
||||||
|
}
|
||||||
|
return lumpFiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<string> GetExtraSourceFiles(string externalDir)
|
||||||
|
{
|
||||||
|
var files = new List<string>();
|
||||||
|
files.AddRange(Directory.GetFiles($"{externalDir}/zlib", "*.c"));
|
||||||
|
files.Add($"{externalDir}/xxHash/xxhash.c");
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 61948fcb1bc40ba47b8c10b0ae801ebb
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,56 @@
|
||||||
|
using HybridCLR.Editor.Installer;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.Build;
|
||||||
|
using UnityEditor.Callbacks;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
#if UNITY_2022_2_OR_NEWER && UNITY_IOS
|
||||||
|
|
||||||
|
namespace HybridCLR.Editor
|
||||||
|
{
|
||||||
|
public static class AddLil2cppSourceCodeToXcodeproj2022OrNewer
|
||||||
|
{
|
||||||
|
//[MenuItem("HybridCLR/Modfiyxcode")]
|
||||||
|
//public static void Modify()
|
||||||
|
//{
|
||||||
|
// OnPostProcessBuild(BuildTarget.iOS, $"{SettingsUtil.ProjectDir}/Build-iOS");
|
||||||
|
//}
|
||||||
|
|
||||||
|
[PostProcessBuild]
|
||||||
|
public static void OnPostProcessBuild(BuildTarget target, string pathToBuiltProject)
|
||||||
|
{
|
||||||
|
if (target != BuildTarget.iOS)
|
||||||
|
return;
|
||||||
|
|
||||||
|
string pbxprojFile = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj";
|
||||||
|
RemoveExternalLibil2cppOption(pbxprojFile);
|
||||||
|
CopyLibil2cppToXcodeProj(pathToBuiltProject);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RemoveExternalLibil2cppOption(string pbxprojFile)
|
||||||
|
{
|
||||||
|
string pbxprojContent = File.ReadAllText(pbxprojFile, Encoding.UTF8);
|
||||||
|
string removeBuildOption = @"--external-lib-il2-cpp=\""$PROJECT_DIR/Libraries/libil2cpp.a\""";
|
||||||
|
if (!pbxprojContent.Contains(removeBuildOption))
|
||||||
|
{
|
||||||
|
//throw new BuildFailedException("modified project.pbxproj fail");
|
||||||
|
Debug.LogError("[AddLil2cppSourceCodeToXcodeproj] modified project.pbxproj fail");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pbxprojContent = pbxprojContent.Replace(removeBuildOption, "");
|
||||||
|
File.WriteAllText(pbxprojFile, pbxprojContent, Encoding.UTF8);
|
||||||
|
Debug.Log($"[AddLil2cppSourceCodeToXcodeproj] remove il2cpp build option '{removeBuildOption}' from file '{pbxprojFile}'");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CopyLibil2cppToXcodeProj(string pathToBuiltProject)
|
||||||
|
{
|
||||||
|
string srcLibil2cppDir = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp";
|
||||||
|
string destLibil2cppDir = $"{pathToBuiltProject}/Il2CppOutputProject/IL2CPP/libil2cpp";
|
||||||
|
BashUtil.RemoveDir(destLibil2cppDir);
|
||||||
|
BashUtil.CopyDir(srcLibil2cppDir, destLibil2cppDir, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a4ce072f7e4a17248a3d9ebfd011356b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -17,7 +17,6 @@ namespace HybridCLR.Editor.BuildProcessors
|
||||||
public void OnPreprocessBuild(BuildReport report)
|
public void OnPreprocessBuild(BuildReport report)
|
||||||
{
|
{
|
||||||
HybridCLRSettings globalSettings = SettingsUtil.HybridCLRSettings;
|
HybridCLRSettings globalSettings = SettingsUtil.HybridCLRSettings;
|
||||||
#if !UNITY_2020_1_OR_NEWER || !UNITY_IOS
|
|
||||||
if (!globalSettings.enable || globalSettings.useGlobalIl2cpp)
|
if (!globalSettings.enable || globalSettings.useGlobalIl2cpp)
|
||||||
{
|
{
|
||||||
string oldIl2cppPath = Environment.GetEnvironmentVariable("UNITY_IL2CPP_PATH");
|
string oldIl2cppPath = Environment.GetEnvironmentVariable("UNITY_IL2CPP_PATH");
|
||||||
|
@ -36,7 +35,6 @@ namespace HybridCLR.Editor.BuildProcessors
|
||||||
Debug.Log($"[CheckSettings] UNITY_IL2CPP_PATH 当前值为:'{curIl2cppPath}',更新为:'{SettingsUtil.LocalIl2CppDir}'");
|
Debug.Log($"[CheckSettings] UNITY_IL2CPP_PATH 当前值为:'{curIl2cppPath}',更新为:'{SettingsUtil.LocalIl2CppDir}'");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (!globalSettings.enable)
|
if (!globalSettings.enable)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -58,7 +56,7 @@ namespace HybridCLR.Editor.BuildProcessors
|
||||||
var installer = new Installer.InstallerController();
|
var installer = new Installer.InstallerController();
|
||||||
if (!installer.HasInstalledHybridCLR())
|
if (!installer.HasInstalledHybridCLR())
|
||||||
{
|
{
|
||||||
throw new Exception($"你没有初始化HybridCLR,请通过菜单'HybridCLR/Installer'安装");
|
throw new BuildFailedException($"你没有初始化HybridCLR,请通过菜单'HybridCLR/Installer'安装");
|
||||||
}
|
}
|
||||||
|
|
||||||
HybridCLRSettings gs = SettingsUtil.HybridCLRSettings;
|
HybridCLRSettings gs = SettingsUtil.HybridCLRSettings;
|
||||||
|
|
|
@ -211,12 +211,6 @@ namespace HybridCLR.Editor.Installer
|
||||||
}
|
}
|
||||||
string workDir = SettingsUtil.HybridCLRDataDir;
|
string workDir = SettingsUtil.HybridCLRDataDir;
|
||||||
Directory.CreateDirectory(workDir);
|
Directory.CreateDirectory(workDir);
|
||||||
//BashUtil.RecreateDir(workDir);
|
|
||||||
|
|
||||||
string buildiOSDir = $"{workDir}/iOSBuild";
|
|
||||||
BashUtil.RemoveDir(buildiOSDir);
|
|
||||||
BashUtil.CopyDir($"{SettingsUtil.HybridCLRDataPathInPackage}/iOSBuild", buildiOSDir, true);
|
|
||||||
|
|
||||||
|
|
||||||
// create LocalIl2Cpp
|
// create LocalIl2Cpp
|
||||||
string localUnityDataDir = SettingsUtil.LocalUnityDataDir;
|
string localUnityDataDir = SettingsUtil.LocalUnityDataDir;
|
||||||
|
|
Loading…
Reference in New Issue