Index: script/ygopro_编译.html ================================================================== --- script/ygopro_编译.html +++ script/ygopro_编译.html @@ -36,10 +36,12 @@
  • 2 新建文件夹
  • 3 编译器
  • 4 lua
  • 5 sqlite3
  • 6 freetype
  • +
  • 7 细节
  • +
  • 8 缺点
  • 1 前言

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

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

    @@ -211,11 +213,11 @@ |——|——|—— include |——|——|—— builds

    编译:

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

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

    -

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

    +

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

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

    str["freetype_文件表"] = {
     
     "src/autofit/autofit.c"
     , "src/base/ftbase.c"
    @@ -257,10 +259,844 @@
     , "src/winfonts/winfnt.c"
     , "src/svg/ftsvg.c"
     , "builds/windows/ftsystem.c"
     , "builds/windows/ftdebug.c"
     }
    +

    7 细节

    +

    大致的流程基本讲清了,接下来就是细节:

    +
    local str = {}
    +local fun = {}
    +
    +local coroutine = _G.coroutine
    +local debug = _G.debug
    +local io = _G.io
    +local math = _G.math
    +local os = _G.os
    +local package = _G.package
    +local string = _G.string
    +local table = _G.table
    +
    +local lfs = _G.lfs
    +
    +--底层--------------------
    +
    +fun["lua_预处理"] = function() --{
    +  
    +  str["lua_目录"] = lfs.currentdir() .. "/lib/lua/src"
    +  
    +  os.remove(str["lua_目录"] .. "/lua.c")
    +  
    +  os.remove(str["lua_目录"] .. "/luac.c")
    +  
    +  os.remove(str["lua_目录"] .. "/Makefile")
    +  
    +  str["lua_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "/TP "
    +  .. "/EHsc "
    +  
    +  end --}
    +  
    +fun["lua_编译"] = function() --{
    +  
    +  os.execute(str["lua_编译参数"] .. "./lib/lua/src/*.c")
    +  
    +  os.execute("lib /OUT:lua.lib *.obj")
    +  
    +  end --}
    +  
    +fun["lua_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["sqlite3_预处理"] = function() --{
    +  
    +  str["sqlite3_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  
    +  end --}
    +  
    +fun["sqlite3_编译"] = function() --{
    +  
    +  os.execute(str["sqlite3_编译参数"] .. "./lib/sqlite3/*.c")
    +  
    +  os.execute("lib /OUT:sqlite3.lib *.obj")
    +  
    +  end --}
    +  
    +fun["sqlite3_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["freetype_预处理"] = function() --{
    +  
    +  str["freetype_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "/wd 4819 "
    +  .. "/D FT2_BUILD_LIBRARY "
    +  .. "-I " .. lfs.currentdir() .. "/lib/freetype/include "
    +  
    +  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"
    +    }
    +    
    +  end --}
    +  
    +fun["freetype_编译"] = function() --{
    +  
    +  for i = 1, #str["freetype_文件表"] do --{
    +    
    +    os.execute(str["freetype_编译参数"]
    +    .. "./lib/freetype/"
    +    .. str["freetype_文件表"][i])
    +    
    +    end --}
    +    
    +  os.execute("lib /OUT:freetype.lib *.obj")
    +  
    +  end --}
    +  
    +fun["freetype_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["libevent_预处理"] = function() --{
    +  
    +  str["libevent_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "/D EVENT__HAVE_STDINT_H "
    +  .. "-I " .. lfs.currentdir() .. "/lib/event/include "
    +  .. "-I " .. lfs.currentdir() .. "/lib/event/compat "
    +  
    +  str["libevent_文件移动参数"] = "robocopy "
    +  .. lfs.currentdir() .. "/lib/event/WIN32-Code/nmake "
    +  .. lfs.currentdir() .. "/lib/event/include "
    +  .. "/xx "
    +  .. "/E "
    +  
    +  str["libevent_文件表"] = {
    +    
    +    "event.c"
    +    , "evthread.c"
    +    , "buffer.c"
    +    , "bufferevent.c"
    +    , "bufferevent_sock.c"
    +    , "bufferevent_filter.c"
    +    , "bufferevent_pair.c"
    +    , "listener.c"
    +    , "bufferevent_ratelim.c"
    +    , "evmap.c"
    +    , "log.c"
    +    , "evutil.c"
    +    , "evutil_rand.c"
    +    , "evutil_time.c"
    +    , "strlcpy.c"
    +    , "signal.c"
    +    , "event_tagging.c"
    +    , "http.c"
    +    , "evdns.c"
    +    , "evrpc.c"
    +    , "win32select.c"
    +    , "evthread_win32.c"
    +    , "buffer_iocp.c"
    +    , "event_iocp.c"
    +    , "bufferevent_async.c"
    +    , "WIN32-Code/getopt_long.c"
    +    , "WIN32-Code/getopt.c"
    +    }
    +    
    +  end --}
    +  
    +fun["libevent_编译"] = function() --{
    +  
    +  os.execute(str["libevent_文件移动参数"])
    +  
    +  for i = 1, #str["libevent_文件表"] do --{
    +    
    +    os.execute(str["libevent_编译参数"]
    +    .. "./lib/event/"
    +    .. str["libevent_文件表"][i])
    +    
    +    end --}
    +    
    +  os.execute("lib /OUT:event.lib *.obj")
    +  
    +  end --}
    +  
    +fun["libevent_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["irrlicht_预处理"] = function() --{
    +  
    +  str["irrlicht_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "/wd 4819 "
    +  .. "/EHsc "
    +  .. "/D UNICODE "
    +  .. "/D _IRR_STATIC_LIB_ "
    +  .. "/D _IRR_WCHAR_FILESYSTEM "
    +  .. "/D NO_IRR_COMPILE_WITH_DIRECT3D_9_ "
    +  .. "/D NO_IRR_COMPILE_WITH_DIRECTINPUT_JOYSTICK_ "
    +  .. "-I " .. lfs.currentdir() .. "/lib/irrlicht/include "
    +  .. "-I " .. lfs.currentdir() .. "/lib/irrlicht/source/Irrlicht "
    +  .. "-I " .. lfs.currentdir() .. "/lib/irrlicht/source/Irrlicht/jpeglib "
    +  .. "-I " .. lfs.currentdir() .. "/lib/irrlicht/source/Irrlicht/libpng "
    +  .. "-I " .. lfs.currentdir() .. "/lib/irrlicht/source/Irrlicht/zlib "
    +  
    +  str["irrlicht_文件表"] = {
    +    
    +    "source/Irrlicht/CCgMaterialRenderer.cpp"
    +    , "source/Irrlicht/CD3D9CgMaterialRenderer.cpp"
    +    , "source/Irrlicht/CDefaultSceneNodeAnimatorFactory.cpp"
    +    , "source/Irrlicht/CDefaultSceneNodeFactory.cpp"
    +    , "source/Irrlicht/CGeometryCreator.cpp"
    +    , "source/Irrlicht/CMeshCache.cpp"
    +    , "source/Irrlicht/CMeshManipulator.cpp"
    +    , "source/Irrlicht/COpenGLCgMaterialRenderer.cpp"
    +    , "source/Irrlicht/CSceneManager.cpp"
    +    , "source/Irrlicht/C3DSMeshFileLoader.cpp"
    +    , "source/Irrlicht/CSMFMeshFileLoader.cpp"
    +    , "source/Irrlicht/CAnimatedMeshHalfLife.cpp"
    +    , "source/Irrlicht/CAnimatedMeshMD2.cpp"
    +    , "source/Irrlicht/CAnimatedMeshMD3.cpp"
    +    , "source/Irrlicht/CB3DMeshFileLoader.cpp"
    +    , "source/Irrlicht/CBSPMeshFileLoader.cpp"
    +    , "source/Irrlicht/CColladaFileLoader.cpp"
    +    , "source/Irrlicht/CCSMLoader.cpp"
    +    , "source/Irrlicht/CDMFLoader.cpp"
    +    , "source/Irrlicht/CIrrMeshFileLoader.cpp"
    +    , "source/Irrlicht/CLMTSMeshFileLoader.cpp"
    +    , "source/Irrlicht/CLWOMeshFileLoader.cpp"
    +    , "source/Irrlicht/CMD2MeshFileLoader.cpp"
    +    , "source/Irrlicht/CMD3MeshFileLoader.cpp"
    +    , "source/Irrlicht/CMS3DMeshFileLoader.cpp"
    +    , "source/Irrlicht/CMY3DMeshFileLoader.cpp"
    +    , "source/Irrlicht/COBJMeshFileLoader.cpp"
    +    , "source/Irrlicht/COCTLoader.cpp"
    +    , "source/Irrlicht/COgreMeshFileLoader.cpp"
    +    , "source/Irrlicht/CPLYMeshFileLoader.cpp"
    +    , "source/Irrlicht/CQ3LevelMesh.cpp"
    +    , "source/Irrlicht/CSkinnedMesh.cpp"
    +    , "source/Irrlicht/CSTLMeshFileLoader.cpp"
    +    , "source/Irrlicht/CXMeshFileLoader.cpp"
    +    , "source/Irrlicht/CAnimatedMeshSceneNode.cpp"
    +    , "source/Irrlicht/CBillboardSceneNode.cpp"
    +    , "source/Irrlicht/CBoneSceneNode.cpp"
    +    , "source/Irrlicht/CCameraSceneNode.cpp"
    +    , "source/Irrlicht/CCubeSceneNode.cpp"
    +    , "source/Irrlicht/CDummyTransformationSceneNode.cpp"
    +    , "source/Irrlicht/CEmptySceneNode.cpp"
    +    , "source/Irrlicht/CLightSceneNode.cpp"
    +    , "source/Irrlicht/CMeshSceneNode.cpp"
    +    , "source/Irrlicht/COctreeSceneNode.cpp"
    +    , "source/Irrlicht/CQuake3ShaderSceneNode.cpp"
    +    , "source/Irrlicht/CShadowVolumeSceneNode.cpp"
    +    , "source/Irrlicht/CSkyBoxSceneNode.cpp"
    +    , "source/Irrlicht/CSkyDomeSceneNode.cpp"
    +    , "source/Irrlicht/CSphereSceneNode.cpp"
    +    , "source/Irrlicht/CTerrainSceneNode.cpp"
    +    , "source/Irrlicht/CTextSceneNode.cpp"
    +    , "source/Irrlicht/CVolumeLightSceneNode.cpp"
    +    , "source/Irrlicht/CWaterSurfaceSceneNode.cpp"
    +    , "source/Irrlicht/CParticleAnimatedMeshSceneNodeEmitter.cpp"
    +    , "source/Irrlicht/CParticleAttractionAffector.cpp"
    +    , "source/Irrlicht/CParticleBoxEmitter.cpp"
    +    , "source/Irrlicht/CParticleCylinderEmitter.cpp"
    +    , "source/Irrlicht/CParticleFadeOutAffector.cpp"
    +    , "source/Irrlicht/CParticleGravityAffector.cpp"
    +    , "source/Irrlicht/CParticleMeshEmitter.cpp"
    +    , "source/Irrlicht/CParticlePointEmitter.cpp"
    +    , "source/Irrlicht/CParticleRingEmitter.cpp"
    +    , "source/Irrlicht/CParticleRotationAffector.cpp"
    +    , "source/Irrlicht/CParticleScaleAffector.cpp"
    +    , "source/Irrlicht/CParticleSphereEmitter.cpp"
    +    , "source/Irrlicht/CParticleSystemSceneNode.cpp"
    +    , "source/Irrlicht/CMetaTriangleSelector.cpp"
    +    , "source/Irrlicht/COctreeTriangleSelector.cpp"
    +    , "source/Irrlicht/CSceneCollisionManager.cpp"
    +    , "source/Irrlicht/CTerrainTriangleSelector.cpp"
    +    , "source/Irrlicht/CTriangleBBSelector.cpp"
    +    , "source/Irrlicht/CTriangleSelector.cpp"
    +    , "source/Irrlicht/CSceneLoaderIrr.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorCameraFPS.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorCameraMaya.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorCollisionResponse.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorDelete.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorFlyCircle.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorFlyStraight.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorFollowSpline.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorRotation.cpp"
    +    , "source/Irrlicht/CSceneNodeAnimatorTexture.cpp"
    +    , "source/Irrlicht/CColladaMeshWriter.cpp"
    +    , "source/Irrlicht/CIrrMeshWriter.cpp"
    +    , "source/Irrlicht/COBJMeshWriter.cpp"
    +    , "source/Irrlicht/CPLYMeshWriter.cpp"
    +    , "source/Irrlicht/CSTLMeshWriter.cpp"
    +    , "source/Irrlicht/CVideoModeList.cpp"
    +    , "source/Irrlicht/CSoftwareDriver.cpp"
    +    , "source/Irrlicht/CSoftwareTexture.cpp"
    +    , "source/Irrlicht/CTRFlat.cpp"
    +    , "source/Irrlicht/CTRFlatWire.cpp"
    +    , "source/Irrlicht/CTRGouraud.cpp"
    +    , "source/Irrlicht/CTRGouraudWire.cpp"
    +    , "source/Irrlicht/CTRTextureFlat.cpp"
    +    , "source/Irrlicht/CTRTextureFlatWire.cpp"
    +    , "source/Irrlicht/CTRTextureGouraud.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudAdd.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudNoZ.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudWire.cpp"
    +    , "source/Irrlicht/CZBuffer.cpp"
    +    , "source/Irrlicht/COpenGLDriver.cpp"
    +    , "source/Irrlicht/COpenGLExtensionHandler.cpp"
    +    , "source/Irrlicht/COpenGLNormalMapRenderer.cpp"
    +    , "source/Irrlicht/COpenGLParallaxMapRenderer.cpp"
    +    , "source/Irrlicht/COpenGLShaderMaterialRenderer.cpp"
    +    , "source/Irrlicht/COpenGLSLMaterialRenderer.cpp"
    +    , "source/Irrlicht/COpenGLTexture.cpp"
    +    , "source/Irrlicht/CD3D8Driver.cpp"
    +    , "source/Irrlicht/CD3D8NormalMapRenderer.cpp"
    +    , "source/Irrlicht/CD3D8ParallaxMapRenderer.cpp"
    +    , "source/Irrlicht/CD3D8ShaderMaterialRenderer.cpp"
    +    , "source/Irrlicht/CD3D8Texture.cpp"
    +    , "source/Irrlicht/CColorConverter.cpp"
    +    , "source/Irrlicht/CFPSCounter.cpp"
    +    , "source/Irrlicht/CImage.cpp"
    +    , "source/Irrlicht/CNullDriver.cpp"
    +    , "source/Irrlicht/CImageWriterBMP.cpp"
    +    , "source/Irrlicht/CImageWriterJPG.cpp"
    +    , "source/Irrlicht/CImageWriterPCX.cpp"
    +    , "source/Irrlicht/CImageWriterPNG.cpp"
    +    , "source/Irrlicht/CImageWriterPPM.cpp"
    +    , "source/Irrlicht/CImageWriterPSD.cpp"
    +    , "source/Irrlicht/CImageWriterTGA.cpp"
    +    , "source/Irrlicht/CImageLoaderBMP.cpp"
    +    , "source/Irrlicht/CImageLoaderDDS.cpp"
    +    , "source/Irrlicht/CImageLoaderJPG.cpp"
    +    , "source/Irrlicht/CImageLoaderPCX.cpp"
    +    , "source/Irrlicht/CImageLoaderPNG.cpp"
    +    , "source/Irrlicht/CImageLoaderPPM.cpp"
    +    , "source/Irrlicht/CImageLoaderPSD.cpp"
    +    , "source/Irrlicht/CImageLoaderRGB.cpp"
    +    , "source/Irrlicht/CImageLoaderTGA.cpp"
    +    , "source/Irrlicht/CImageLoaderWAL.cpp"
    +    , "source/Irrlicht/CD3D9Driver.cpp"
    +    , "source/Irrlicht/CD3D9HLSLMaterialRenderer.cpp"
    +    , "source/Irrlicht/CD3D9NormalMapRenderer.cpp"
    +    , "source/Irrlicht/CD3D9ParallaxMapRenderer.cpp"
    +    , "source/Irrlicht/CD3D9ShaderMaterialRenderer.cpp"
    +    , "source/Irrlicht/CD3D9Texture.cpp"
    +    , "source/Irrlicht/CBurningShader_Raster_Reference.cpp"
    +    , "source/Irrlicht/CDepthBuffer.cpp"
    +    , "source/Irrlicht/CSoftwareDriver2.cpp"
    +    , "source/Irrlicht/CSoftwareTexture2.cpp"
    +    , "source/Irrlicht/CTRGouraud2.cpp"
    +    , "source/Irrlicht/CTRGouraudAlpha2.cpp"
    +    , "source/Irrlicht/CTRGouraudAlphaNoZ2.cpp"
    +    , "source/Irrlicht/CTRNormalMap.cpp"
    +    , "source/Irrlicht/CTRStencilShadow.cpp"
    +    , "source/Irrlicht/CTRTextureBlend.cpp"
    +    , "source/Irrlicht/CTRTextureDetailMap2.cpp"
    +    , "source/Irrlicht/CTRTextureGouraud2.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudAdd2.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudAddNoZ2.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudAlpha.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudAlphaNoZ.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudNoZ2.cpp"
    +    , "source/Irrlicht/CTRTextureGouraudVertexAlpha2.cpp"
    +    , "source/Irrlicht/CTRTextureLightMap2_Add.cpp"
    +    , "source/Irrlicht/CTRTextureLightMap2_M1.cpp"
    +    , "source/Irrlicht/CTRTextureLightMap2_M2.cpp"
    +    , "source/Irrlicht/CTRTextureLightMap2_M4.cpp"
    +    , "source/Irrlicht/CTRTextureLightMapGouraud2_M4.cpp"
    +    , "source/Irrlicht/CTRTextureWire2.cpp"
    +    , "source/Irrlicht/IBurningShader.cpp"
    +    , "source/Irrlicht/CLogger.cpp"
    +    , "source/Irrlicht/COSOperator.cpp"
    +    , "source/Irrlicht/Irrlicht.cpp"
    +    , "source/Irrlicht/os.cpp"
    +    , "source/Irrlicht/lzma/LzmaDec.c"
    +    , "source/Irrlicht/zlib/adler32.c"
    +    , "source/Irrlicht/zlib/compress.c"
    +    , "source/Irrlicht/zlib/crc32.c"
    +    , "source/Irrlicht/zlib/deflate.c"
    +    , "source/Irrlicht/zlib/inffast.c"
    +    , "source/Irrlicht/zlib/inflate.c"
    +    , "source/Irrlicht/zlib/inftrees.c"
    +    , "source/Irrlicht/zlib/trees.c"
    +    , "source/Irrlicht/zlib/uncompr.c"
    +    , "source/Irrlicht/zlib/zutil.c"
    +    , "source/Irrlicht/jpeglib/jaricom.c"
    +    , "source/Irrlicht/jpeglib/jcapimin.c"
    +    , "source/Irrlicht/jpeglib/jcapistd.c"
    +    , "source/Irrlicht/jpeglib/jcarith.c"
    +    , "source/Irrlicht/jpeglib/jccoefct.c"
    +    , "source/Irrlicht/jpeglib/jccolor.c"
    +    , "source/Irrlicht/jpeglib/jcdctmgr.c"
    +    , "source/Irrlicht/jpeglib/jchuff.c"
    +    , "source/Irrlicht/jpeglib/jcinit.c"
    +    , "source/Irrlicht/jpeglib/jcmainct.c"
    +    , "source/Irrlicht/jpeglib/jcmarker.c"
    +    , "source/Irrlicht/jpeglib/jcmaster.c"
    +    , "source/Irrlicht/jpeglib/jcomapi.c"
    +    , "source/Irrlicht/jpeglib/jcparam.c"
    +    , "source/Irrlicht/jpeglib/jcprepct.c"
    +    , "source/Irrlicht/jpeglib/jcsample.c"
    +    , "source/Irrlicht/jpeglib/jctrans.c"
    +    , "source/Irrlicht/jpeglib/jdapimin.c"
    +    , "source/Irrlicht/jpeglib/jdapistd.c"
    +    , "source/Irrlicht/jpeglib/jdarith.c"
    +    , "source/Irrlicht/jpeglib/jdatadst.c"
    +    , "source/Irrlicht/jpeglib/jdatasrc.c"
    +    , "source/Irrlicht/jpeglib/jdcoefct.c"
    +    , "source/Irrlicht/jpeglib/jdcolor.c"
    +    , "source/Irrlicht/jpeglib/jddctmgr.c"
    +    , "source/Irrlicht/jpeglib/jdhuff.c"
    +    , "source/Irrlicht/jpeglib/jdinput.c"
    +    , "source/Irrlicht/jpeglib/jdmainct.c"
    +    , "source/Irrlicht/jpeglib/jdmarker.c"
    +    , "source/Irrlicht/jpeglib/jdmaster.c"
    +    , "source/Irrlicht/jpeglib/jdmerge.c"
    +    , "source/Irrlicht/jpeglib/jdpostct.c"
    +    , "source/Irrlicht/jpeglib/jdsample.c"
    +    , "source/Irrlicht/jpeglib/jdtrans.c"
    +    , "source/Irrlicht/jpeglib/jerror.c"
    +    , "source/Irrlicht/jpeglib/jfdctflt.c"
    +    , "source/Irrlicht/jpeglib/jfdctfst.c"
    +    , "source/Irrlicht/jpeglib/jfdctint.c"
    +    , "source/Irrlicht/jpeglib/jidctflt.c"
    +    , "source/Irrlicht/jpeglib/jidctfst.c"
    +    , "source/Irrlicht/jpeglib/jidctint.c"
    +    , "source/Irrlicht/jpeglib/jmemmgr.c"
    +    , "source/Irrlicht/jpeglib/jmemnobs.c"
    +    , "source/Irrlicht/jpeglib/jquant1.c"
    +    , "source/Irrlicht/jpeglib/jquant2.c"
    +    , "source/Irrlicht/jpeglib/jutils.c"
    +    , "source/Irrlicht/libpng/png.c"
    +    , "source/Irrlicht/libpng/pngerror.c"
    +    , "source/Irrlicht/libpng/pngget.c"
    +    , "source/Irrlicht/libpng/pngmem.c"
    +    , "source/Irrlicht/libpng/pngpread.c"
    +    , "source/Irrlicht/libpng/pngread.c"
    +    , "source/Irrlicht/libpng/pngrio.c"
    +    , "source/Irrlicht/libpng/pngrtran.c"
    +    , "source/Irrlicht/libpng/pngrutil.c"
    +    , "source/Irrlicht/libpng/pngset.c"
    +    , "source/Irrlicht/libpng/pngtrans.c"
    +    , "source/Irrlicht/libpng/pngwio.c"
    +    , "source/Irrlicht/libpng/pngwrite.c"
    +    , "source/Irrlicht/libpng/pngwtran.c"
    +    , "source/Irrlicht/libpng/pngwutil.c"
    +    , "source/Irrlicht/aesGladman/aescrypt.cpp"
    +    , "source/Irrlicht/aesGladman/aeskey.cpp"
    +    , "source/Irrlicht/aesGladman/aestab.cpp"
    +    , "source/Irrlicht/aesGladman/fileenc.cpp"
    +    , "source/Irrlicht/aesGladman/hmac.cpp"
    +    , "source/Irrlicht/aesGladman/prng.cpp"
    +    , "source/Irrlicht/aesGladman/pwd2key.cpp"
    +    , "source/Irrlicht/aesGladman/sha1.cpp"
    +    , "source/Irrlicht/aesGladman/sha2.cpp"
    +    , "source/Irrlicht/bzip2/blocksort.c"
    +    , "source/Irrlicht/bzip2/bzcompress.c"
    +    , "source/Irrlicht/bzip2/bzlib.c"
    +    , "source/Irrlicht/bzip2/crctable.c"
    +    , "source/Irrlicht/bzip2/decompress.c"
    +    , "source/Irrlicht/bzip2/huffman.c"
    +    , "source/Irrlicht/bzip2/randtable.c"
    +    , "source/Irrlicht/CIrrDeviceConsole.cpp"
    +    , "source/Irrlicht/CIrrDeviceFB.cpp"
    +    , "source/Irrlicht/CIrrDeviceLinux.cpp"
    +    , "source/Irrlicht/CIrrDeviceSDL.cpp"
    +    , "source/Irrlicht/CIrrDeviceStub.cpp"
    +    , "source/Irrlicht/CIrrDeviceWin32.cpp"
    +    , "source/Irrlicht/CIrrDeviceWinCE.cpp"
    +    , "source/Irrlicht/CAttributes.cpp"
    +    , "source/Irrlicht/CFileList.cpp"
    +    , "source/Irrlicht/CFileSystem.cpp"
    +    , "source/Irrlicht/CLimitReadFile.cpp"
    +    , "source/Irrlicht/CMemoryFile.cpp"
    +    , "source/Irrlicht/CMountPointReader.cpp"
    +    , "source/Irrlicht/CNPKReader.cpp"
    +    , "source/Irrlicht/CPakReader.cpp"
    +    , "source/Irrlicht/CReadFile.cpp"
    +    , "source/Irrlicht/CTarReader.cpp"
    +    , "source/Irrlicht/CWADReader.cpp"
    +    , "source/Irrlicht/CWriteFile.cpp"
    +    , "source/Irrlicht/CXMLReader.cpp"
    +    , "source/Irrlicht/CXMLWriter.cpp"
    +    , "source/Irrlicht/CZipReader.cpp"
    +    , "source/Irrlicht/irrXML.cpp"
    +    , "source/Irrlicht/CDefaultGUIElementFactory.cpp"
    +    , "source/Irrlicht/CGUIButton.cpp"
    +    , "source/Irrlicht/CGUICheckBox.cpp"
    +    , "source/Irrlicht/CGUIColorSelectDialog.cpp"
    +    , "source/Irrlicht/CGUIComboBox.cpp"
    +    , "source/Irrlicht/CGUIContextMenu.cpp"
    +    , "source/Irrlicht/CGUIEditBox.cpp"
    +    , "source/Irrlicht/CGUIEnvironment.cpp"
    +    , "source/Irrlicht/CGUIFileOpenDialog.cpp"
    +    , "source/Irrlicht/CGUIFont.cpp"
    +    , "source/Irrlicht/CGUIImage.cpp"
    +    , "source/Irrlicht/CGUIImageList.cpp"
    +    , "source/Irrlicht/CGUIInOutFader.cpp"
    +    , "source/Irrlicht/CGUIListBox.cpp"
    +    , "source/Irrlicht/CGUIMenu.cpp"
    +    , "source/Irrlicht/CGUIMeshViewer.cpp"
    +    , "source/Irrlicht/CGUIMessageBox.cpp"
    +    , "source/Irrlicht/CGUIModalScreen.cpp"
    +    , "source/Irrlicht/CGUIScrollBar.cpp"
    +    , "source/Irrlicht/CGUISkin.cpp"
    +    , "source/Irrlicht/CGUISpinBox.cpp"
    +    , "source/Irrlicht/CGUISpriteBank.cpp"
    +    , "source/Irrlicht/CGUIStaticText.cpp"
    +    , "source/Irrlicht/CGUITabControl.cpp"
    +    , "source/Irrlicht/CGUITable.cpp"
    +    , "source/Irrlicht/CGUIToolBar.cpp"
    +    , "source/Irrlicht/CGUITreeView.cpp"
    +    , "source/Irrlicht/CGUIWindow.cpp"
    +    }
    +    
    +  end --}
    +  
    +fun["irrlicht_编译"] = function() --{
    +  
    +  for i = 1, #str["irrlicht_文件表"] do --{
    +    
    +    os.execute(str["irrlicht_编译参数"]
    +    .. "./lib/irrlicht/"
    +    .. str["irrlicht_文件表"][i])
    +    
    +    end --}
    +    
    +  os.execute("lib /OUT:irrlicht.lib *.obj")
    +  
    +  end --}
    +  
    +fun["irrlicht_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["lzma_预处理"] = function() --{
    +  
    +  str["lzma_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +    
    +  end --}
    +  
    +fun["lzma_编译"] = function() --{
    +  
    +  os.execute(str["lzma_编译参数"]
    +  .. "./gframe/lzma/*.c")
    +
    +  os.execute("lib /OUT:clzma.lib *.obj")
    +  
    +  end --}
    +  
    +fun["lzma_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["spmemvfs_预处理"] = function() --{
    +  
    +  str["spmemvfs_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "-I " .. lfs.currentdir() .. "/lib/sqlite3 "
    +    
    +  end --}
    +  
    +fun["spmemvfs_编译"] = function() --{
    +  
    +  os.execute(str["spmemvfs_编译参数"]
    +  .. "./gframe/spmemvfs/*.c")
    +
    +  os.execute("lib /OUT:cspmemvfs.lib *.obj")
    +  
    +  end --}
    +  
    +fun["spmemvfs_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["ocgcore_预处理"] = function() --{
    +  
    +  str["ocgcore_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "/EHsc "
    +  .. "-I " .. lfs.currentdir() .. "/lib/lua/src "
    +    
    +  end --}
    +  
    +fun["ocgcore_编译"] = function() --{
    +  
    +  os.execute(str["ocgcore_编译参数"]
    +  .. "./ocgcore/*.cpp")
    +
    +  os.execute("lib /OUT:ocgcore.lib *.obj")
    +  
    +  end --}
    +  
    +fun["ocgcore_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  end --}
    +  
    +fun["ygopro_预处理"] = function() --{
    +  
    +  str["ygopro_编译参数"] = "cl "
    +  .. "/MD "
    +  .. "/O2 "
    +  .. "/c "
    +  .. "/wd 4819 "
    +  .. "/EHsc "
    +  .. "/D _IRR_WCHAR_FILESYSTEM "
    +  .. "-I " .. lfs.currentdir() .. "/ocgcore "
    +  .. "-I " .. lfs.currentdir() .. "/lib/irrlicht/include "
    +  .. "-I " .. lfs.currentdir() .. "/lib/event/include "
    +  .. "-I " .. lfs.currentdir() .. "/lib/freetype/include "
    +  .. "-I " .. lfs.currentdir() .. "/lib/sqlite3 "
    +    
    +  end --}
    +  
    +fun["ygopro_编译"] = function() --{
    +  
    +  os.execute(str["ygopro_编译参数"]
    +  .. "./gframe/*.cpp")
    +  
    +  os.rename("gframe.obj", "gframe.o")
    +
    +  os.execute("lib /OUT:ygopro.lib *.obj")
    +  
    +  end --}
    +  
    +fun["ygopro_连接"] = function() --{
    +  
    +  os.execute("link "
    +  .. "/OUT:ygopro.exe "
    +  .. "gframe.o "
    +  .. "ygopro.lib "
    +  .. "clzma.lib "
    +  .. "cspmemvfs.lib "
    +  .. "event.lib "
    +  .. "freetype.lib "
    +  .. "irrlicht.lib "
    +  .. "lua.lib "
    +  .. "ocgcore.lib "
    +  .. "sqlite3.lib "
    +  .. "gdi32.lib "
    +  .. "user32.lib "
    +  .. "kernel32.lib "
    +  .. "imm32.lib "
    +  .. "winmm.lib "
    +  .. "ws2_32.lib "
    +  .. "opengl32.lib "
    +  .. "shell32.lib "
    +  .. "iphlpapi.lib "
    +  .. "advapi32.lib "
    +  )
    +  
    +  end --}
    +  
    +fun["ygopro_清理"] = function() --{
    +  
    +  os.execute("del *.obj")
    +  
    +  os.execute("del *.o")
    +  
    +  end --}
    +  
    +--高层--------------------
    +
    +fun["lua"] = function() --{
    +  
    +  fun["lua_预处理"]()
    +  
    +  fun["lua_编译"]()
    +  
    +  fun["lua_清理"]()
    +  
    +  end --}
    +  
    +fun["sqlite3"] = function() --{
    +  
    +  fun["sqlite3_预处理"]()
    +  
    +  fun["sqlite3_编译"]()
    +  
    +  fun["sqlite3_清理"]()
    +  
    +  end --}
    +  
    +fun["freetype"] = function() --{
    +  
    +  fun["freetype_预处理"]()
    +  
    +  fun["freetype_编译"]()
    +  
    +  fun["freetype_清理"]()
    +  
    +  end --}
    +  
    +fun["libevent"] = function() --{
    +  
    +  fun["libevent_预处理"]()
    +  
    +  fun["libevent_编译"]()
    +  
    +  fun["libevent_清理"]()
    +  
    +  end --}
    +  
    +fun["irrlicht"] = function() --{
    +  
    +  fun["irrlicht_预处理"]()
    +  
    +  fun["irrlicht_编译"]()
    +  
    +  fun["irrlicht_清理"]()
    +  
    +  end --}
    +  
    +fun["lzma"] = function() --{
    +  
    +  fun["lzma_预处理"]()
    +  
    +  fun["lzma_编译"]()
    +  
    +  fun["lzma_清理"]()
    +  
    +  end --}
    +  
    +fun["spmemvfs"] = function() --{
    +  
    +  fun["spmemvfs_预处理"]()
    +  
    +  fun["spmemvfs_编译"]()
    +  
    +  fun["spmemvfs_清理"]()
    +  
    +  end --}
    +  
    +fun["ocgcore"] = function() --{
    +  
    +  fun["ocgcore_预处理"]()
    +  
    +  fun["ocgcore_编译"]()
    +  
    +  fun["ocgcore_清理"]()
    +  
    +  end --}
    +  
    +fun["ygopro"] = function() --{
    +  
    +  fun["ygopro_预处理"]()
    +  
    +  fun["ygopro_编译"]()
    +  
    +  fun["ygopro_连接"]()
    +  
    +  fun["ygopro_清理"]()
    +  
    +  end --}
    +  
    +-------------------------
    +
    +fun["lua"]()
    +
    +fun["sqlite3"]()
    +
    +fun["freetype"]()
    +
    +fun["libevent"]()
    +
    +fun["irrlicht"]()
    +
    +fun["lzma"]()
    +
    +fun["spmemvfs"]()
    +
    +fun["ocgcore"]()
    +
    +fun["ygopro"]()
    +

    8 缺点

    +

    这样子编译的 ygopro 还缺一些媒体资源,从你的 ygopro +中直接复制过来就行。

    +

    不支持声音,小问题。

    +

    不支持打人机卡组,小问题。

    +

    没有图标,小问题。

    +

    不支持中文输入法,大问题,不过我的输入法不受影响,哈哈。