scons構建系統

scons採用python語言作爲其構建語言,因此非常強大靈活,舉例如下:

SetOption("random", 1)
env = Environment(MSVC_VERSION="9.0", CXXFLAGS=["/EHsc", "/MD", "/Zi"], WINDOWS_EMBED_MANIFEST="1", CPPDEFINES=["NDEBUG"])
COMMON_LIBS = []
GAMESERVER_CPPPATH = []
GAMESERVER_LIBPATH = []
GAMESERVER_LINKFLAGS = []

def build_common():
    Export("env")

    #xlib
    xlib_target = SConscript("BGLServer/xlib/source/SConscript", variant_dir="build/xlib", duplicate=0)

    #public
    public_target = SConscript("BGLServer/public/SConscript", variant_dir="build/public", duplicate=0)

    #gui
    gui_target = SConscript("EasyGui/EasyGui/SConscript", variant_dir="build/gui", duplicate=0)

    global COMMON_LIBS
    
    COMMON_LIBS = [
        xlib_target,
        public_target,
        gui_target,
        "gdi32",
        "advapi32"
        ]

def build_gameserver():
    #gameserver
    global GAMESERVER_LINKFLAGS
    global GAMESERVER_LIBPATH
    global GAMESERVER_CPPPATH
    
    GAMESERVER_CPPPATH = [
        "#3rdLib/protobuf-2.3.0/include",
        "#3rdLib/ticpp/include",
        "#3rdLib/zlib/include",
        "#3rdLib/MiniDump/include",
        ]

    GAMESERVER_LIBPATH = [
        "#3rdLib/protobuf-2.3.0/lib",
        "#3rdLib/zlib/lib",
        "#3rdLib/ticpp/lib",
        "#3rdLib/MiniDump/lib",
        ],

    GAMESERVER_LINKFLAGS = [
        "/DEBUG",
        "/PDB:\"build/bin/ginlogserver.pdb\""
        ],

    game_env = env.Clone(CPPPATH = GAMESERVER_CPPPATH, LIBPATH = GAMESERVER_LIBPATH, LIBS = COMMON_LIBS, LINKFLAGS = GAMESERVER_LINKFLAGS)
    Export("game_env")
    gs_target = SConscript("BGLServer/loginserver/SConscript", variant_dir="build/loginserver", duplicate=0)
    gs_install = env.Install("build/bin", gs_target)

    
def build_selserver():
    SEL_LINKFLAGS = [
        "/DEBUG",
        "/PDB:\"build/bin/selserver.pdb\""
        ]

    sel_env = env.Clone(CPPPATH = GAMESERVER_CPPPATH, LIBPATH = GAMESERVER_LIBPATH, LIBS = COMMON_LIBS, LINKFLAGS = SEL_LINKFLAGS)
    Export("sel_env")
    sel_target = SConscript("BGLServer/selectcharserver/SConscript", variant_dir="build/selserver", duplicate=0)
    env.Install("build/bin", sel_target)

def build_centerserver():
    SEL_LINKFLAGS = [
        "/DEBUG",
        "/PDB:\"build/bin/centerserver.pdb\""
        ]

    center_env = env.Clone(CPPPATH = GAMESERVER_CPPPATH, LIBPATH = GAMESERVER_LIBPATH, LIBS = COMMON_LIBS, LINKFLAGS = SEL_LINKFLAGS)
    Export("center_env")
    center_target = SConscript("BGLServer/servercenter/SConscript", variant_dir="build/centerserver", duplicate=0)
    env.Install("build/bin", center_target)

def start_build():
    build_common()
    build_gameserver()
    build_selserver()
    build_centerserver()
    
#start.............
start_build()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章