Xlua 编译 Windows、UWP、Android、iOS 平台支持库

news/2025/2/25 7:40:05

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 平台
  1. 生成支持 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
  1. 生成支持 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

  1. 生成支持 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

http://www.niftyadmin.cn/n/5865186.html

相关文章

爬虫基础入门之爬取豆瓣电影Top250-Re正则的使用

网址:豆瓣电影 Top 250 本案例所需要的模块 requests (用于发送HTTP请求)re (用于字符串匹配和操作) 确定需要爬取的数据 &#xff1a; 电影的名称电影的年份电影的评分电影评论人数 一. 发送请求 模拟浏览器向服务器发送请求 准备工作 -分析页面: F12 or 右击点击检查 查看…

Python将GIF动图转换为Base64编码字符串

文章目录 步骤一&#xff1a;准备Python环境步骤二&#xff1a;编写Python脚本步骤三&#xff1a;运行Python脚本步骤四&#xff1a;查看输出步骤五&#xff1a;在HTML中使用Base64字符串注意事项 在Web开发中&#xff0c;有时需要将图像文件&#xff08;如GIF动图&#xff09;…

Claude 3.7 Sonnet 泄露,Anthropic 最先进 AI 模型即将在 AWS Bedrock 上首次亮相

(图片&#xff1a;AWS) Anthropic 旗下先进的 AI 模型 Claude 3.7 Sonnet 似乎即将发布。业界预计&#xff0c;亚马逊可能会在2025年2月26日的活动中公布相关消息。泄露的信息表明&#xff0c;该模型将托管于 AWS Bedrock 平台&#xff0c;该平台以提供尖端 AI 模型访问而闻名…

MFC—加法器

1.需要为编辑框添加变量 2.在cpp文件中的按钮中添加代码 void CMFCAddtionDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码UpdateData(true);//把控件里的值更新给变量m_add m_add1 m_add2;//加法UpdateData(false);//把控件相加的值赋值给控件 }

Python+Flutter前后端分离开发跨平台待办事项APP实战

以下是一个简单的示例&#xff0c;展示如何使用 Flutter 开发一个待办事项应用&#xff0c;并通过 FastAPI 和 SQLAlchemy 作为后端接口。为了简化代码&#xff0c;所有的 Flutter 前端代码将写在一个 main.dart 文件中。 1. 后端部分&#xff08;FastAPI SQLAlchemy&#xf…

Node.js 入门 原型链污染

前言 node.js是后端的语言 我们知道的apache 服务器 才能支撑一些代码 但是 node.js是一个独立的环境&#xff08;node.js本身就是一个平台&#xff09;这个就是为什么很多小程序和app是直接使用它的 nodejs的特点 &#xff1a; 1、单线程 &#xff1a;一次node 只能执行…

DSP芯片C6678的SRIO及其中断跳转的配置

C6678SRIO读写测试门铃中断跳转测试 SRIO简述代码前言SRIO配置原始代码1.使能电源2.初始化SRIO回环修改 3.SRIO测试 Doorbell门铃中断1.初始化中断函数2.中断向量表建立3.中断向量表的链接 本博客基于创龙“678ZH产品线”的SRIO代码&#xff0c;部分参考于网友们的博客&#xf…

angular表格排序分页

说明: 使用angular实现表格&#xff0c;包括数据源&#xff0c;排序&#xff0c;分页 效果图&#xff1a; step1:C:\Users\Administrator\WebstormProjects\untitled4\src\app\setting\setting.component.ts import { Component, ViewChild, AfterViewInit } from angular/c…