Index: script/ygopro_编译.html ================================================================== --- script/ygopro_编译.html +++ script/ygopro_编译.html @@ -34,10 +34,12 @@

1 前言

来,走起,我们来编译一个小且可用的 ygopro 。

功能不求全,只要有残局功能就够了。

@@ -152,11 +154,12 @@

这个临界点是人定的。

接下来,不讲底层了。

01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。

但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。

-

一门编程语言可以大致分为三部分:语法、标准库、自定义库。

+

一门编程语言可以大致分为三部分:

+

语法、标准库、自定义库。

lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c 语言标准库。

加个参数:

cl /MD /O2 /c ./lib/lua/src/*.c

这样子, lua 就会采用系统自带的 c 语言标准库了。

@@ -168,15 +171,96 @@
cl /EHsc /TP /MD /O2 /c ./lib/lua/src/*.c

好,大功告成,这就算把 lua 编译完了。

不过,这时候,你的目录下会有一大堆的 obj 文件,不好看。

于是输入:

lib /OUT:lua.lib *.obj
-

这就把所有的 obj 文件合成了一个文件了。所以可以把 obj -文件全部删了:

+

这就把所有的 obj 文件合成了一个文件了。

+

所以可以把 obj 文件全部删了:

del *.obj

也就是说,我们由一堆文件中编译出了一个文件:

lua.lib
+

5 sqlite3

+

接下来,我们需要下载一个很厉害的软件,作者是理查德·希普。

+

这一回应该不会遇到网络问题了:

+
https://www.sqlite.org/index.html
+

虽然,这一回我们不会再遇到网络问题,但可能会遇到这个网站的质疑:

+

你到底是不是

+

这是因为有些中国人恶意进攻这个网站,于是理查德专门把防范机器人的机制加强了。

+

把解压后的目录复制过来:

+
ygopro
+|—— lib
+|——|—— lua
+|——|——|—— src
+|——|—— sqlite3
+

然后编译:

+
cl /MD /O2 /c ./lib/sqlite3/*.c
+

然后再连接与清理一下即可。

+

其实 sqlite3 非常强,但是 ygopro +并没有对它擅加利用,这一点也体现在,你看这次的编译非常简单吧。

+

编译简单是因为没有设置那些解放 sqlite3 力量的宏。

+

6 freetype

+

下载:

+
http://www.freetype.org
+

目录结构:

+
ygopro
+|—— lib
+|——|—— lua
+|——|——|—— src
+|——|—— sqlite3
+|——|—— freetype
+|——|——|—— src
+|——|——|—— include
+|——|——|—— builds
+

编译:

+
cl /MD /O2 /c /D FT2_BUILD_LIBRARY -I ./lib/freetype/include
+

可以发现,上面添加了头文件所在的文件夹。

+

但奇怪的是,怎么没看到c文件?

+

因为这一次要编译的文件太多了:

+
str["freetype_文件表"] = {
+
+"src/autofit/autofit.c"
+, "src/base/ftbase.c"
+, "src/base/ftbbox.c"
+, "src/base/ftbdf.c"
+, "src/base/ftbitmap.c"
+, "src/base/ftcid.c"
+, "src/base/ftfstype.c"
+, "src/base/ftgasp.c"
+, "src/base/ftglyph.c"
+, "src/base/ftgxval.c"
+, "src/base/ftinit.c"
+, "src/base/ftmm.c"
+, "src/base/ftotval.c"
+, "src/base/ftpatent.c"
+, "src/base/ftpfr.c"
+, "src/base/ftstroke.c"
+, "src/base/ftsynth.c"
+, "src/base/fttype1.c"
+, "src/base/ftwinfnt.c"
+, "src/bdf/bdf.c"
+, "src/cache/ftcache.c"
+, "src/cff/cff.c"
+, "src/cid/type1cid.c"
+, "src/gzip/ftgzip.c"
+, "src/lzw/ftlzw.c"
+, "src/pcf/pcf.c"
+, "src/pfr/pfr.c"
+, "src/psaux/psaux.c"
+, "src/pshinter/pshinter.c"
+, "src/psnames/psmodule.c"
+, "src/raster/raster.c"
+, "src/sfnt/sfnt.c"
+, "src/sdf/sdf.c"
+, "src/smooth/smooth.c"
+, "src/truetype/truetype.c"
+, "src/type1/type1.c"
+, "src/type42/type42.c"
+, "src/winfonts/winfnt.c"
+, "src/svg/ftsvg.c"
+, "builds/windows/ftsystem.c"
+, "builds/windows/ftdebug.c"
+}