Overview
Comment: | 0.0.2742 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
6f99fc6a2a789f6f31ad7bb21a4d9ecb |
User & Date: | 顽雨沉风 on 2023-10-14 10:02:52 |
Other Links: | manifest | tags |
Context
2023-10-14
| ||
10:13 | 0.0.2743 check-in: d8be18d9bf user: 顽雨沉风 tags: trunk | |
10:02 | 0.0.2742 check-in: 6f99fc6a2a user: 顽雨沉风 tags: trunk | |
09:33 | 0.0.2741 check-in: cdf7904414 user: 顽雨沉风 tags: trunk | |
Changes
Modified script/ygopro_编译.html from [e1da7ea2ac] to [ed93a40534].
︙ | ︙ | |||
32 33 34 35 36 37 38 39 40 41 42 43 44 45 | </header> <nav id="TOC" role="doc-toc"> <ul> <li><a href="#前言" id="toc-前言"><span class="toc-section-number">1</span> 前言</a></li> <li><a href="#新建文件夹" id="toc-新建文件夹"><span class="toc-section-number">2</span> 新建文件夹</a></li> <li><a href="#编译器" id="toc-编译器"><span class="toc-section-number">3</span> 编译器</a></li> <li><a href="#lua" id="toc-lua"><span class="toc-section-number">4</span> lua</a></li> </ul> </nav> <h1 data-number="1" id="前言"><span class="header-section-number">1</span> 前言</h1> <p>来,走起,我们来编译一个小且可用的 ygopro 。</p> <p>功能不求全,<b>只要有</b>残局功能就够了。</p> <h1 data-number="2" id="新建文件夹"><span class="header-section-number">2</span> 新建文件夹</h1> <p>万事第一步,先新建个文件夹……</p> | > > | 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | </header> <nav id="TOC" role="doc-toc"> <ul> <li><a href="#前言" id="toc-前言"><span class="toc-section-number">1</span> 前言</a></li> <li><a href="#新建文件夹" id="toc-新建文件夹"><span class="toc-section-number">2</span> 新建文件夹</a></li> <li><a href="#编译器" id="toc-编译器"><span class="toc-section-number">3</span> 编译器</a></li> <li><a href="#lua" id="toc-lua"><span class="toc-section-number">4</span> lua</a></li> <li><a href="#sqlite3" id="toc-sqlite3"><span class="toc-section-number">5</span> sqlite3</a></li> <li><a href="#freetype" id="toc-freetype"><span class="toc-section-number">6</span> freetype</a></li> </ul> </nav> <h1 data-number="1" id="前言"><span class="header-section-number">1</span> 前言</h1> <p>来,走起,我们来编译一个小且可用的 ygopro 。</p> <p>功能不求全,<b>只要有</b>残局功能就够了。</p> <h1 data-number="2" id="新建文件夹"><span class="header-section-number">2</span> 新建文件夹</h1> <p>万事第一步,先新建个文件夹……</p> |
︙ | ︙ | |||
150 151 152 153 154 155 156 | <p>电平受制于电的不稳定,所以它是不精确的。</p> <p>电平是低于某个临界点,就属于低电平,高于某个临界点,就属于高电平。</p> <p>这个临界点是人定的。</p> <p>接下来,不讲底层了。</p> <p>01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。</p> <p>但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。</p> | | > | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 | <p>电平受制于电的不稳定,所以它是不精确的。</p> <p>电平是低于某个临界点,就属于低电平,高于某个临界点,就属于高电平。</p> <p>这个临界点是人定的。</p> <p>接下来,不讲底层了。</p> <p>01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。</p> <p>但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。</p> <p>一门编程语言可以大致分为三部分:</p> <p>语法、标准库、自定义库。</p> <p>lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c 语言标准库。</p> <p>加个参数:</p> <pre><code>cl /MD /O2 /c ./lib/lua/src/*.c</code></pre> <p>这样子, lua 就会采用系统自带的 c 语言标准库了。</p> <p>但仅仅是这样子还不行,因为 ygopro 不是一个纯 c 语言的项目。</p> <p>这里的 lua 需要采用 cpp ,也就是 c++的方式进行编译:</p> <pre><code>cl /TP /MD /O2 /c ./lib/lua/src/*.c</code></pre> <p>然后由于 cpp 的特性,你会收到一堆报错,此时编译器会提醒你再加个参数:</p> <pre><code>cl /EHsc /TP /MD /O2 /c ./lib/lua/src/*.c</code></pre> <p>好,大功告成,这就算把 lua 编译完了。</p> <p>不过,这时候,你的目录下会有一大堆的 obj 文件,不好看。</p> <p>于是输入:</p> <pre><code>lib /OUT:lua.lib *.obj</code></pre> <p>这就把所有的 obj 文件合成了一个文件了。</p> <p>所以可以把 obj 文件全部删了:</p> <pre><code>del *.obj</code></pre> <p>也就是说,我们由一堆文件中编译出了一个文件:</p> <pre><code>lua.lib</code></pre> <h1 data-number="5" id="sqlite3"><span class="header-section-number">5</span> sqlite3</h1> <p>接下来,我们需要下载一个很厉害的软件,作者是理查德·希普。</p> <p>这一回应该不会遇到网络问题了:</p> <pre><code>https://www.sqlite.org/index.html</code></pre> <p>虽然,这一回我们不会再遇到网络问题,但可能会遇到这个网站的质疑:</p> <p>你到底是不是<b>人</b>?</p> <p>这是因为有些中国人恶意进攻这个网站,于是理查德专门把防范机器人的机制加强了。</p> <p>把解压后的目录复制过来:</p> <pre><code>ygopro |—— lib |——|—— lua |——|——|—— src |——|—— sqlite3</code></pre> <p>然后编译:</p> <pre><code>cl /MD /O2 /c ./lib/sqlite3/*.c</code></pre> <p>然后再连接与清理一下即可。</p> <p>其实 sqlite3 非常强,但是 ygopro 并没有对它擅加利用,这一点也体现在,你看这次的编译非常简单吧。</p> <p>编译简单是因为没有设置那些解放 sqlite3 力量的宏。</p> <h1 data-number="6" id="freetype"><span class="header-section-number">6</span> freetype</h1> <p>下载:</p> <pre><code>http://www.freetype.org</code></pre> <p>目录结构:</p> <pre><code>ygopro |—— lib |——|—— lua |——|——|—— src |——|—— sqlite3 |——|—— freetype |——|——|—— src |——|——|—— include |——|——|—— builds</code></pre> <p>编译:</p> <pre><code>cl /MD /O2 /c /D FT2_BUILD_LIBRARY -I ./lib/freetype/include</code></pre> <p>可以发现,上面添加了头文件所在的文件夹。</p> <p>但奇怪的是,怎么没看到c文件?</p> <p>因为这一次要编译的文件太多了:</p> <pre><code>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" }</code></pre> <script> document.onclick = function(event) { var target = event.target if (target.tagName == "PRE" |
︙ | ︙ |
Modified script/ygopro_编译.md from [55c0a64c37] to [713ffe9f05].
︙ | ︙ | |||
227 228 229 230 231 232 233 | 接下来,不讲底层了。 01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。 但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。 | | > > | 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 | 接下来,不讲底层了。 01 往上可以组建逻辑门,而汇编编程语言可以指导逻辑门的运行。 但问题在于各个商家给逻辑门定的汇编语言是不一样的,于是我们需要一个通用的汇编语言,而这就是 c 语言的别称——「便携式汇编语言」。 一门编程语言可以大致分为三部分: 语法、标准库、自定义库。 lua 会用到 c 语言的标准库,而我们从上面的过程可以看到系统肯定会有 c 语言标准库。 加个参数: ~~~ cl /MD /O2 /c ./lib/lua/src/*.c |
︙ | ︙ | |||
263 264 265 266 267 268 269 | 于是输入: ~~~ lib /OUT:lua.lib *.obj ~~~ | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 | 于是输入: ~~~ lib /OUT:lua.lib *.obj ~~~ 这就把所有的 obj 文件合成了一个文件了。 所以可以把 obj 文件全部删了: ~~~ del *.obj ~~~ 也就是说,我们由一堆文件中编译出了一个文件: ~~~ lua.lib ~~~ ## sqlite3 接下来,我们需要下载一个很厉害的软件,作者是理查德·希普。 这一回应该不会遇到网络问题了: ~~~ https://www.sqlite.org/index.html ~~~ 虽然,这一回我们不会再遇到网络问题,但可能会遇到这个网站的质疑: 你到底是不是<b>人</b>? 这是因为有些中国人恶意进攻这个网站,于是理查德专门把防范机器人的机制加强了。 把解压后的目录复制过来: ~~~ ygopro |—— lib |——|—— lua |——|——|—— src |——|—— sqlite3 ~~~ 然后编译: ~~~ cl /MD /O2 /c ./lib/sqlite3/*.c ~~~ 然后再连接与清理一下即可。 其实 sqlite3 非常强,但是 ygopro 并没有对它擅加利用,这一点也体现在,你看这次的编译非常简单吧。 编译简单是因为没有设置那些解放 sqlite3 力量的宏。 ## 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" } ~~~ |