⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bakefile_quickstart.txt

📁 wxGTK 是 wxWidgets 的 linux GTK+ (>2.2.3)版本。wxWidgets 是一个跨平台的 GUI 框架
💻 TXT
字号:
-----------------------------------------------------------------------Creating a Cross-Platform Build System Using BakefileThe 10-minute, do-it-yourself wx project baking guide (with free sample recipes!)Status: DRAFTAuthor: Kevin OllivierDate: 2/13/04License: wxWidgets License-----------------------------------------------------------------------Supporting many different platforms can be a difficult challenge. Thechallenge for wxWidgets is especially great, because it supports a variety ofdifferent compilers and development environments, including MSVC, Borland C++,MinGW, DevCPP, GNU make/automake, among others. Maintaining such a largenumber of different project files and formats can quickly become overwhelming.To simplify the maintenance of these formats, one of the wxWidgets developers,Vaclav Slavik, created Bakefile, a XML-based makefile wrapper that generatesall the native project files for wxWidgets. So now, even though wxWidgetssupports all these formats, wxWidgets developers need only update one file -the Bakefile, and it handles the rest. But Bakefile isn't specific towxWidgets in any way - you can use Bakefile for your own projects, too. Thisbrief tutorial will take a look at how to do that. Note that this tutorial assumes that you are familiar with how to buildsoftware using one of the supported Bakefile makefile systems, that you havesome basic familiarity with how makefiles work, and that you are capable ofsetting environment variables on your platform. Also note that the terms Unixand Unix-based refers to all operating systems that share a Unix heritage,including FreeBSD, Linux, Mac OS X, and various other operating systems.-- Getting Started --First, you'll need to install Bakefile. You can always find the latest versionfor download online at http://bakefile.sf.net. A binary installer is providedfor Windows users, while users of Unix-based operating systems (OS) will needto unpack the tarball and run configure && make && make install. (Packages forsome distros are also available, check http://bakefile.sf.net for details.)-- Setting Up Your wx Build Environment --Before you can build wxWidgets software using Bakefile or any other buildsystem, you need to make sure that wxWidgets is built and that wxWidgetsprojects can find the wxWidgets includes and library files. wxWidgets buildinstructions can be found by going to the docs subfolder, then looking for thesubfolder that corresponds to your platform (i.e. msw, gtk, mac) and reading"install.txt" there. Once you've done that, here are some extra steps youshould take to make sure your Bakefile projects work with wxWidgets:On Windows----------Once you've built wxWidgets, you should create an environment variable namedWXWIN and set it to the home folder of your wxWidgets source tree. (If you usethe command line to build, you can also set or override WXWIN at build time bypassing it in as an option to your makefile.)On Unix-------In a standard install, you need not do anything so long as wx-config is onyour PATH. wx-config is all you need. (See the section of the book on usingwx-config for more information.)-- A Sample wx Project Bakefile --Now that everything is setup, it's time to take Bakefile for a test run. Irecommend that you use the wx sample Bakefile to get you started. It can befound in the 'build/bakefiles/wxpresets/sample' directory in the wxWidgetssource tree. Here is the minimal.bkl Bakefile used in the sample:minimal.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"/>    <exe id="minimal" template="wx">        <app-type>gui</app-type>        <debug-info>on</debug-info>        <runtime-libs>dynamic</runtime-libs>                <sources>minimal.cpp</sources>                <wx-lib>core</wx-lib>        <wx-lib>base</wx-lib>    </exe></makefile>---------------------------------------------------------------It's a complete sample ready to be baked, so go into the directory mentionedabove and run the following command: On Windows:bakefile -f msvc -I.. minimal.bklOn Unix:bakefile -f gnu -I.. minimal.bklIt should generate a makefile (makefile.vc or GNUmakefile, respectively) whichyou can use to build the software. Just build the software using the command"nmake -f makefile.vc" or "make -f GNUmakefile" respectively. Now let's take alook at some of the basic Bakefile concepts that you'll need to know to moveon from here.-- Project Types --As mentioned earlier, Bakefile builds makefiles for many differentdevelopment environments. The -f option accepts a list of formats that youwould like to build, separated by commas. Valid values are:    autoconf      GNU autoconf Makefile.in files    borland       Borland C/C++ makefiles    cbuilderx     C++ Builder X project files    dmars         Digital Mars makefiles    dmars_smake   Digital Mars makefiles for SMAKE    gnu           GNU toolchain makefiles (Unix)    mingw         MinGW makefiles (mingw32-make)    msevc4prj     MS eMbedded Visual C++ 4 project files    msvc          MS Visual C++ nmake makefiles    msvc6prj      MS Visual C++ 6.0 project files    watcom        OpenWatcom makefilesTIP: autoconf Project Type---------------------------You may notice that in the sample folder, there is also a file calledconfigure.in. That file is the input for autoconf, which creates the configurescripts that you often see when you build software from source on Unix-basedplatforms. People use configure scripts because they make your Unix makefilesmore portable by automatically detecting the right libraries and commands touse on the user's machine and OS. This is necessary because there are manyUnix-based operating systems and they all are slightly different in varioussmall ways.Bakefile does not generate a configure or configure.in script, so if you wantto use configure scripts with your Unix-based software, you will need to learnhow to use autoconf. Unfortunately, this topic deserves a book all its own andis beyond the scope of this tutorial, but a book on the subject can be foundonline at: http://sources.redhat.com/autobook/. Note that you do not need touse automake when you are using Bakefile, just autoconf, as Bakefileessentially does the same thing as automake. ------------------------------ Targets --Every project needs to have a target or targets, specifying what is to bebuilt. In Bakefile, you specify the target by creating a tag named with thetarget type. The possible names for targets are:    exe         create an executable file    dll         create a shared library    lib         create a static library    module      create a library that is loaded at runtime (i.e. a plugin)Note the sample above is an "exe" target. Once you create the target, all thebuild settings, including flags and linker options, should be placed insidethe target tag, as they are in the sample above.-- Adding Sources and Includes --Obviously, you need to be able to add source and include files to yourproject. You add sources using the "<sources>" tag (as shown above), and addinclude directories using the "<include>" tag. You can add multiple <sources>and <include> tags to add multiple source files, or you can also add multiplesources and includes into one tag by separating them with a space, like so:<sources>minimal.cpp minimal2.cpp minimal3.cpp</sources>If your sources are in a subfolder of your Bakefile, you use the slash "/"character to denote directories, even on Windows. (i.e. src/minimal.cpp) Formore options and flags, please consult the Bakefile documentation in the 'doc'subfolder of Bakefile, or you can also find it on the Bakefile web site.-- Build Options --What if you want to offer a DEBUG and a RELEASE build? Or a UNICODE/ANSIbuild? You can do this in Bakefile by creating options. To create an option,use the "<option>" tag. A typical option has three important parts: a name, adefault value, and a comma-separated list of values. For example, here is howto create a DEBUG option which builds debug by default:<option name="DEBUG">    <default-value>1</default-value>    <values>0 1</values></option>You can then test the value of this option and conditionally set buildsettings, flags, etc. For more information on both options and conditionalstatements, please refer to the Bakefile documentation.-- Bakefile Presets/Templates and Includes --It is common that most projects will reuse certain settings, or options, intheir makefiles. (i.e. DEBUG or static/dynamic library options) Also, it iscommon to have to use settings from another project; for example, any projectthat uses wxWidgets will need to build using the same flags and options thatwxWidgets was built with. Bakefile makes these things easier by allowing usersto create Bakefile templates, where you can store common settings. Bakefile ships with a couple of templates, found in the 'presets' subfolder ofyour Bakefile installation. The "simple.bkl" template adds a DEBUG option tomakefiles so you can build in release or debug mode. To add this template toyour project, simply add the tag "<include file="presets/simple.bkl"/>" to thetop of your Bakefile. Then, when creating your target, add the"template="simple"" attribute to it. Now, once you build the makefile, yourusers can write commands like:nmake -f makefile.vc DEBUG=1ormake -f GNUmakefile DEBUG=1In order to build the software in debug mode.To simplify the building of wxWidgets-based projects, wxWidgets contains a aset of Bakefiles that automatically configure your build system to becompatible with wxWidgets. As you'll notice in the sample above, the sampleproject uses the wx template. Once you've included the template, your softwarewill now build with wxWidgets support. But since the wx presets don't exist in the Bakefile presets subfolder,Bakefile needs to know where to find these presets. The "-I" command adds thewxpresets folder to Bakefile's search path. If you regularly include Bakefile presets in places other than the Bakefilepresets folder, then you can set the BAKEFILE_PATHS environment variable sothat Bakefile can find these Bakefiles and include them in your project. Thisway you no longer need to specify the -I flag each time you build.Lastly, it's important to note that the Win 32 wx project Bakefiles come withsome common build options that users can use when building the software. Theseoptions are:     Option              Values              Description    ------              ------              -------------    WX_MONOLITHIC       0(default),1        Set this to 1 if you built wx                                             as a monolithic library    WX_SHARED           0(default),1        Specify static or dynamic wx libs    WX_UNICODE          0(defualt),1        Use ANSI or UNICODE wx libs    WX_DEBUG            0,1(default)        Use release or debug wx libs    *WX_VERSION         25,26(default)      Specify version of wx libs*Note: Any version of wx past 2.5 will be allowed here, so 25/26 is not acomplete list of values. These options are not needed under Unix as wx-config can be used to specifythese options.-- bakefile_gen - Automated Bakefile Scripts --If you have a large project, you can imagine that the calls to Bakefile wouldget more and more complex and unwieldly to manage. For this reason, a scriptcalled bakefile_gen was created, which reads in a .bkgen file that providesall the commands needed to build all the makefiles your project supports. Adiscussion of how to use bakefile_gen is beyond the scope of this tutorial,but it deserves mention because it can be invaluable to large projects.Documentation on bakefile_gen can be found in the Bakefile documentation.-- Conclusion --This concludes our basic tutorial of the cross-platform Bakefile build systemmanagement tool. From here, please be sure to take a good look at the Bakefiledocumentation to see what else it is capable of. Please post questions to thebakefile-devel@lists.sourceforge.net list, or if you have questions specificto the wx template Bakefile, send an email to wx-users@lists.wxwidgets.org.Enjoy using Bakefile!

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -