-
Notifications
You must be signed in to change notification settings - Fork 599
macOS上编译
注意:实验性,HELP WANTED
笔者无意深究macOS的具体开发流程,所以只是粗略的跑通了编译步骤
-
YGOPro发行版
用以获取卡片数据库和卡图和app,其中数据库和app是必备的
-
git
并且拥有github账号和SSH的key
-
homebrew
-
Xcode
-
项目有两种描述文件premake和cmake,但cmake近期无人维护
-
下载64位版,可在premake5.lua中修改
USE_IRRKLANG
来禁用,结果就是没有声音
通过brew安装:
- freetype
- libevent
- libx11
- sqlite
- zlib
- gpatch
以下两个依赖库需要手工下载源代码并静态编译
-
只有这个版本被测试过,而且需要打中文支持的补丁才能用
-
不支持5.2及更早的版本,需要C++编译而不是默认的C编译,所以在此静态编译
使用git clone
即可,clone时加--recursive
来同时克隆子模块,或者完成后运行git submodule update --init
clone完成后需要分别进入ocgcore
和script
两个子模块文件夹checkout到master分支
具体命令:
git clone [email protected]:Fluorohydride/ygopro.git
cd ygopro
git submodule update --init
cd ocgcore/
git checkout master
cd ..
cd script/
git checkout master
cd ..
-
将下载的irrlicht解压到项目文件夹,重命名为
irrlicht
-
将下载的irrKlang解压到项目文件夹,重命名为
irrklang
(注意k是小写) -
将下载的lua解压到项目文件夹,重命名为
lua
-
将premake文件夹内
irrlicht
和lua
文件夹复制到项目文件夹,其中包含了各个依赖库的premake描述文件,可以自行修改完善
cp -r ./premake/irrlicht .
cp -r ./premake/lua .
cp ./irrklang/bin/macosx-gcc/libirrklang.dylib /usr/local/lib/
原版irrlicht不支持中文,需要打补丁,进入irrlicht文件夹运行
patch -p1 < irrlicht.patch
也可以直接使用修改好的版本
cd irrlicht
cp -r include /usr/local/include/irrlicht
cd source/Irrlicht/MacOSX
xcodebuild -project MacOSX.xcodeproj
cp build/Release/libIrrlicht.a /usr/local/lib/
cd ../../../..
解压premake5程序放到项目文件夹,然后运行
./premake5 gmake --cc=clang
就可以进入build文件夹并make
了
此时目录结构省略多余文件后应该看起来是这样:
├── bin
├── build
├── cmake
├── gframe
├── irrklang
│ └── include
├── irrlicht
│ └── include
├── lua
│ └── src
├── obj
├── ocgcore
├── premake
├── script
├── sound
└── textures
从发行版里把cards.cdb
和pics
文件夹和deck
文件夹和replay
文件夹ln
到项目根目录
复制一个从其他地方下载的ygopro.app
到项目根目录,把我们编译的主程序替换进去
cp ./bin/release/ygopro.app ./ygopro.app/Contents/MacOS/ygopro
然后可以双击ygopro.app
的图标运行,或者 ./ygopro.app/Contents/MacOS/ygopro
运行
(TODO:生成个正常的包,像macOS上其他软件一样把静态文件都放到.app里面而不是外面)