1.0 This is the source code documentation of the wx.NET build system. In fact, this is not part of the wx.NET code, but this has originally been developed to be used in this project. The system consists of the assembly
wx.BuildSystem.dll. The system provides means to define build projects, which are instances of predefined classes, and implement programs for building the targets of these projects or to create BOO source files of programs that can build the targets of the projects. The latter service enables users of the system with uncommon or unsupported build environment to adopt standard build processes to their needs.
One advice in advance: Please avoid to use blank spaces (' ') in names of files or directories because some tools may have problems to access these files.
wx.Build aims at providing a modular and platform independent build environment based on .NET. There are many obvious relations to systems like ant, the MS build system, or other MAKE- and Meta-MAKE systems. The main difference lies in two points:
This build system consists of build actions, that are wrappers of compilers and linkers - like in ANT. Additionally, this system comprises build projects, that define the actual targets of a build. Providers of code define such projects in a .NET assembly. Refer to the remarks on the projects wx.Build.Net.CSharpAssemblyProject and wx.Build.Cxx.DynamicLibraryProject. These classes create plans comprising build actions that actually build the projects. The projects are able to identify alternative sets of tools, like e.g. the MS cl.exe compiler and link.exe on the one hand to build C/C++ DLLs or the MinGW distribution of the GCC compiler on the other hand. The schedule that will be created by the build project uses all supported tools that are installed. Thus, if the MS cl.exe compiler fails to compile a file, the build system will try to use alternative tools like the MinGW compiler and linker.
- The implemented functions put a focus on building, deployment, and installation. Installation systems like the Windows Installer (for MSI files) apply the main idea of the original MAKE system: They create a plan for installation (or building a system respectively) exploiting information on dependencies between relevant installation or build targets. So, the idea is to attack both tasks - building and installation- by the same code base. Of course, the needs of the wx.NET project is very limited w.r.t. to the required functions. Thus, the envisioned extend of the implementation may rather be considered as a study than a system for general use. However, the intended modular structure of the code base enables necessary extension for other purposes.
- All cited systems infer sequences of actions for installation and planning. However, their capabilities concerning the inference of such schedules are very limited.
wx.Build separates clearly between targets of the build process, classes of projects that implement portable sceleton plans to achieve targets, and the available actions. Actions are created using action providers. The system can be extended by the definition of new file types and new actions to produce such files.
However, in many situations, users want to configure the building process by hand. Maybe, some tools are not installed in standard directories or the build process runs in an unsupported environment. For this reason, the Build process is able to produce a BOO file that builds the targets. This file has a structure that is easy to change and acts like a make file.
However, the current implementation is more or less a proof-of-concept implementation, since it only provides wrappers for those tools and implements those types of projects that are required to build wx.NET.
Refer to page Typical Use for remarks on how to use build programs that are based on this library.
wx.NET Build System. (c) 2009-2010 Harald Meyer auf'm Hofe