wxWidgets在windows下使用bakefile管理编译代码

做一些跨平台或者大点的应用,不光大家个人的技术能力要强,系统的设计要完善,作为编译代码管理也是非常重要的一块,现以wxWidgets在windows下应用的编译环境举例说明。
    不论是GCC的make或VC的nmake都是会对某个项目的makefile去进行检查和产生编译。当然如果不怕麻烦,可以在一个命令行里一个文件一个文件去编译。而这里则是要使用bakefile对基于wxWidgets的应用进行编译。
    首先在windows中需要包含wxWidgets的bkl文件应为%WX_WIDGETS%"build"bakefiles"wxpresets"presets"wx.bkl,所以用一个bat文件来简化相关操作。如:bake.bat
@echo off
if "%1"=="" goto ERROR
if not "%2"=="" goto ERROR

set WX_WIDGETS=wxWidgets-2.8.7
set WX_DEFINES=-IC:"works"%WX_WIDGETS%"build"bakefiles"wxpresets -DWX_DIR=C:"works"%WX_WIDGETS% -DWX_UNICODE=1

if "%1"=="release" goto RELEASE

:DEBUG
bakefile build.bkl -f msvc -o Makefile -DWX_DEBUG=1 -DWX_SHARED=1 -DBUILD=debug -DBUILDDIR=Debug %WX_DEFINES%
goto END

:RELEASE
bakefile build.bkl -f msvc -o Makefile -DWX_DEBUG=0 -DWX_SHARED=0 -DBUILD=release -DBUILDDIR=Release %WX_DEFINES%
goto END

:ERROR
echo Usage: bake [debug / release]

:END

放在和项目的bkl文件一块的地方。
然后创建build.bkl文件
<?xml version="1.0" ?>
<!-- $Id: bakefile_quickstart.txt,v 1.5 2006/02/11 18:41:11 KO Exp $ -->

<makefile>

    <include file="presets/wx.bkl"/>

    <set var="DEBUGINFO">
        <if cond="BUILD=='debug'">on</if>
        <if cond="BUILD=='release'">off</if>
    </set>

    <set var="DEBUGRUNTIME">
        <if cond="BUILD=='debug'">on</if>
        <if cond="BUILD=='release'">off</if>
    </set>

    <set var="OPTIMIZEFLAG">
        <if cond="BUILD=='debug'">off</if>
        <if cond="BUILD=='release'">speed</if>
    </set>

    <set var="WARNINGS">
        <if cond="BUILD=='debug'">max</if>
        <if cond="BUILD=='release'">no</if>
    </set>

    <set var="RUNTIMELIBRARY">
        <if cond="BUILD=='debug'">dynamic</if>
        <if cond="BUILD=='release'">static</if>
    </set>

    <template id="common" template="wx">
        <debug-info>$(DEBUGINFO)</debug-info>
        <debug-runtime-libs>$(DEBUGRUNTIME)</debug-runtime-libs>
        <optimize>$(OPTIMIZEFLAG)</optimize>
        <warnings>$(WARNINGS)</warnings>
        <if cond="FORMAT=='msvc'">
            <if cond="WX_SHARED=='1'">
                <cxxflags>/DWXUSINGDLL</cxxflags>
            </if>
            <if cond="BUILD=='release'">
                <threading>multi</threading>
            </if>
        </if>
        <runtime-libs>$(RUNTIMELIBRARY)</runtime-libs>
        <wx-lib>net</wx-lib>
        <wx-lib>core</wx-lib>
        <wx-lib>base</wx-lib>
    </template>
     <exe id="test" template="common">
        <app-type>console</app-type>
        <include>server/include</include>
        <sources>$(fileList('server/db/test/*.cpp'))</sources>
       
    </exe>
</makefile>

按以上的步骤,将相关设置在更改后,那么所有的项目成员都不需要因为vs中的input lib,dirs等问题困扰了。
试试bake release后,查看一下Makefile.vc的内容对不对,同时nmake就可以看到编译过程了.
   
posted @ 2009-05-19 09:58  浩@子  阅读(477)  评论(0编辑  收藏  举报