Xlua 编译 Windows、UWP、Android、iOS 平台支持库
Windows:
安装 Visual Studio(推荐 2017 或更高版本)
安装 CMake(https://cmake.org/)
macOS:
安装 Xcode 和命令行工具
安装 CMake
检查 cmake 是否安装,打开命令行输入:cmake --version
C:\Users\Administrator>cmake --version
cmake version 3.30.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
显示 cmake 版本表示安装成功
Mac cmake 也是一样
如果 Mac 没有安装 cmake 通过命令 brew install cmake
安装 Cmake,检查版本也是命令行输入 cmake --version
XLua gitHub 地址 https://github.com/Tencent/xLua?tab=readme-ov-file
下载路径如下
一、Windows 平台
- 生成支持 x86_64 平台库,打开 build 文件夹,找到命令文件
make_win64_lua53.bat
打开命令行,执行make_win64_lua53.bat
执行成功输出如下
PS F:\xLua-master\build> F:\xLua-master\build\make_win64_lua53.batF:\xLua-master\build>set "__VS=Visual Studio 16 2019"F:\xLua-master\build>set "__VSWhere=C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe"F:\xLua-master\build>set "__VSDISPLAY="F:\xLua-master\build>set "__VSVER="F:\xLua-master\build>if exist "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" (
for /F "tokens=*" %p in ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property catalog_productLineVersion') do set __VSDISPLAY=%pfor /F "tokens=*" %p in ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property catalog_productDisplayVersion') do set __VSVER=%p
)F:\xLua-master\build>set __VSDISPLAY=2019F:\xLua-master\build>set __VSVER=16.11.38F:\xLua-master\build>if "16.11.38" NEQ "" (set __VS=Visual Studio 16 2019 )F:\xLua-master\build>mkdir build64 & pushd build64F:\xLua-master\build\build64>cmake -G "Visual Studio 16 2019" -A x64 ..
CMake Deprecation Warning at CMakeLists.txt:7 (cmake_minimum_required):Compatibility with CMake < 3.5 will be removed from a future version ofCMake.Update the VERSION argument <min> value or use a ...<max> suffix to tellCMake that the project does not need compatibility with older versions.-- Selecting Windows SDK version 10.0.20348.0 to target Windows 10.0.22621.
-- The C compiler identification is MSVC 19.29.30154.0
-- The CXX compiler identification is MSVC 19.29.30154.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: H:/Software/VisualStudioProfessional2019/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: H:/Software/VisualStudioProfessional2019/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (5.4s)
-- Generating done (0.0s)
-- Build files have been written to: F:/xLua-master/build/build64F:\xLua-master\build\build64>popdF:\xLua-master\build>cmake --build build64 --config Release
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.11.2+f32259642
版权所有(C) Microsoft Corporation。保留所有权利。1>Checking Build SystemBuilding Custom Rule F:/xLua-master/build/CMakeLists.txtlapi.clauxlib.clbaselib.clbitlib.clcode.clcorolib.clctype.cldblib.cldebug.cldo.cldump.clfunc.clgc.clinit.cliolib.cllex.clmathlib.clmem.cloadlib.clobject.c正在生成代码...正在编译...lopcodes.closlib.clparser.clstate.clstring.clstrlib.cltable.cltablib.cltm.clundump.clutf8lib.clvm.clzio.ci64lib.cxlua.cmemory_leak_checker.c正在生成代码...auxiliar.cbuffer.cexcept.cinet.cio.cluasocket.cmime.coptions.cselect.ctcp.ctimeout.cudp.cwsocket.c正在生成代码...正在创建库 F:/xLua-master/build/build64/Release/xlua.lib 和对象 F:/xLua-master/build/build64/Release/xlua.expxlua.vcxproj -> F:\xLua-master\build\build64\Release\xlua.dllBuilding Custom Rule F:/xLua-master/build/CMakeLists.txtF:\xLua-master\build>md plugin_lua53\Plugins\x86_64F:\xLua-master\build>copy /Y build64\Release\xlua.dll plugin_lua53\Plugins\x86_64\xlua.dll
跟 build 同级目录生成文件夹 build64
日志 copy /Y build64\Release\xlua.dll plugin_lua53\Plugins\x86_64\xlua.dll
提示最后将 xlua.dll 复制到了目录 build\plugin_lua53\Plugins\x86_64\xlua.dll
打开Unity 项目将 xlua.dll 放到路径 Assets\Plugins\x86_64\xlua.dll
打开 make_win64_lua53.bat 查看
set "__VS=Visual Studio 16 2019"
set "__VSWhere=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
set "__VSDISPLAY="
set "__VSVER="
if exist "%__VSWhere%" (for /f "tokens=*" %%p in ('"%__VSWhere%" -latest -property catalog_productLineVersion') do set __VSDISPLAY=%%pfor /f "tokens=*" %%p in ('"%__VSWhere%" -latest -property catalog_productDisplayVersion') do set __VSVER=%%p)
if "%__VSVER%" neq "" ( set __VS=Visual Studio %__VSVER:~0,2% %__VSDisplay%
)mkdir build64 & pushd build64
cmake -G "%__VS%" -A x64 ..
popd
cmake --build build64 --config Release
md plugin_lua53\Plugins\x86_64
copy /Y build64\Release\xlua.dll plugin_lua53\Plugins\x86_64\xlua.dll
pause
Visual Studio 16 2019 是 Visual Studio 2019 对应的是 16,不同 Visual Studio 版本对应的需要不同,设置不对会有报错
故意修改错误 cmake -G "Visual Studio 15 2019" -A x64 ..
将 16 改成 15
下面报错提示了 Visual Studio每个版本对应的序号以及后跟 -A 格式
cmake -G "Visual Studio 15 2019" -A x64 ..
CMake Error: Could not create named generator Visual Studio 15 2019GeneratorsVisual Studio 17 2022 = Generates Visual Studio 2022 project files.Use -A option to specify architecture.
* Visual Studio 16 2019 = Generates Visual Studio 2019 project files.Use -A option to specify architecture.Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.Optional [arch] can be "Win64" or "ARM".Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.Optional [arch] can be "Win64" or "ARM".Visual Studio 12 2013 [arch] = Deprecated. Generates Visual Studio 2013project files. Optional [arch] can be
make_win64_lua53.bat 代码精简后如下
mkdir build64 & pushd build64
cmake -G "Visual Studio 16 2019" -A x64 ..
popd
cmake --build build64 --config Release
md plugin_lua53\Plugins\x86_64
copy /Y build64\Release\xlua.dll plugin_lua53\Plugins\x86_64\xlua.dll
pause
- 生成支持 x86 平台库,打开 build 文件夹,找到命令文件
make_win32_lua53.bat
打开命令行,执行make_win32_lua53.bat
跟 build 同级目录生成文件夹 build32
成功则生成路径为build\plugin_lua53\Plugins\x86\xlua.dll
打开Unity 项目将 xlua.dll 放到路径 Assets\Plugins\x86\xlua.dll
- 生成支持 UWP 平台的 x86、x86_64、arm、arm64 支持库
生成文件:
build\build_uwp
build\build_uwp_arm
build\build_uwp_arm64
build\build_uwp64
xlua库生成路径如下
build\plugin_lua53\Plugins\WSA\ARM\xlua.dll
build\plugin_lua53\Plugins\WSA\ARM64\xlua.dll
build\plugin_lua53\Plugins\WSA\x64\xlua.dll
build\plugin_lua53\Plugins\WSA\x86\xlua.dll
打开Unity 添加路径 Assets\Plugins\WSA
然后将上面路径对应放进项目
二、Mac、iOS
Mac 和 iOS 平台必须在 Mac 电脑上执行
安装 XCode、cmake
同样是打开终端,cd 进入 build 文件夹
执行命令:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
1. 生成 MacOS支持库
将 make_osx_lua53.sh
拖拽到终端执行即可,终端当前命令必须赞 build 文件夹,否则会失败,比如 CMakeLiSt.txt 找不到等
会在 build 同级目录生成 build_osx 文件夹
lua库则是在 plugin_lua53/Plugins/xlua.bundle 这是 Mac OS 的支持库
因为 Mac 有 Intel 和 Apple Silicon 两种芯片类型
Intel 包含类型:
Intel Core 系列:Core i3、Core i5、Core i7 和 Core i9
Intel Xeon 系列:Xeon W、Xeon E5/E7
Intel Core M 系列:Core m3/m5/m7
等
Apple silicon 包含类型:
M1 系列:M1、M1 Pro、M1 Max 、M1 Ultra
M2 系列:M2、M2 Pro、M2 Max、M2 Ultra
M3 系列:M3、M3 Pro、M3 Max、
等
默认在 Intel 类型芯片的 Mac 上生成的 xlua 库是支持 Intel 的
默认在 Apple Silicon 类型西片的 Mac 上生成的 xlua 库是支持 Apple Silicon 的,两者一般不能共用
支持 Intel 芯片 的库放在路径:Assets/Plugins/macOS/x86_64/xlua.bundle (Intel 芯片的库)
选择 xlua.bundle (Intel 芯片的库) 在 Inspector 面板选择支持的 macOS -> CPU -> Intel 64-bit
支持 Apple Silicon芯片 的库放在路径:Assets/Plugins/macOS/arm64/xlua.bundle (Apple Silicon 芯片的库)
选择 xlua.bundle (Apple Silicon 芯片的库)在 Inspector 面板选择支持的 macOS -> CPU -> Apple silicon
2. 生成 iOS 支持库
执行命令 make_ios_lua53.sh
在 Build 同级目录生成 build_ios 文件夹
iOS 支持库生成到路径:build/plugin_lua53/Plugins/iOS/libxlua.a
打开 Unity 项目放到路径: Assets/Plugins/iOS/libxlua.a
三、生成 Android 支持库
windows 环境下大概率有问题,建议直接在 mac 上编译
需要安装 NDK、Android SDK 配置环境变量
如果终端使用 Zsh 作为默认 shell 时,环境变量配置到 ~/.zshrc
如果终端使用 Bash 作为默认 shell 时,环境变量配置到 ~/.bash_profile
我电脑是使用 Zsh 执行的 shell,执行命令 open ~/.zshrc
打开
我使用的 Unity 2022.3.26 ,通过 Unity Hub 安装了 SDK 和 NDK,找到 SDK 和 NDK 路径 ,打开 ~/.zshrc
在最后添加 四行命令
export ANDROID_NDK=/Application/Unity/2022.3.26f1/PlaybackEngines/AndroidPlayer/NDK
export ANDROID_SDK_ROOT=/Application/Unity/2022.3.26f1/PlaybackEngines/AndroidPlayer/SDK
export PATH=$PATH:$ANDROID_SDK_ROOT
export PATH=$PATH:$ANDROID_NDK_ROOT
保存、关闭
执行命令 source ~/.zshrc
让配置生效
如果是配置的 ~/.bash_profile
文件,执行命令 source ~/.bash_profile
让配置生效
跟上面一样,到build 目录执行命令 make_android_lua53.sh
生成
build/plugin_lua53/Plugins/Android/lisb/arm64-v8a/libxlua.so
build/plugin_lua53/Plugins/Android/lisb/armeabi-v7a/libxlua.so
build/plugin_lua53/Plugins/Android/lisb/x86/libxlua.so