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.bat
F:\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=%p
for /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=2019
F:\xLua-master\build>set __VSVER=16.11.38
F:\xLua-master\build>if "16.11.38" NEQ "" (set __VS=Visual Studio 16 2019 )
F:\xLua-master\build>mkdir build64 & pushd build64
F:\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 of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake 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/build64
F:\xLua-master\build\build64>popd
F:\xLua-master\build>cmake --build build64 --config Release
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.11.2+f32259642
版权所有(C) Microsoft Corporation。保留所有权利。
1>Checking Build System
Building Custom Rule F:/xLua-master/build/CMakeLists.txt
lapi.c
lauxlib.c
lbaselib.c
lbitlib.c
lcode.c
lcorolib.c
lctype.c
ldblib.c
ldebug.c
ldo.c
ldump.c
lfunc.c
lgc.c
linit.c
liolib.c
llex.c
lmathlib.c
lmem.c
loadlib.c
lobject.c
正在生成代码...
正在编译...
lopcodes.c
loslib.c
lparser.c
lstate.c
lstring.c
lstrlib.c
ltable.c
ltablib.c
ltm.c
lundump.c
lutf8lib.c
lvm.c
lzio.c
i64lib.c
xlua.c
memory_leak_checker.c
正在生成代码...
auxiliar.c
buffer.c
except.c
inet.c
io.c
luasocket.c
mime.c
options.c
select.c
tcp.c
timeout.c
udp.c
wsocket.c
正在生成代码...
正在创建库 F:/xLua-master/build/build64/Release/xlua.lib 和对象 F:/xLua-master/build/build64/Release/xlua.exp
xlua.vcxproj -> F:\xLua-master\build\build64\Release\xlua.dll
Building Custom Rule F:/xLua-master/build/CMakeLists.txt
F:\xLua-master\build>md plugin_lua53\Plugins\x86_64
F:\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=%%p
for /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 2019
Generators
Visual 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 2013
project 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