The Monster Build System is a collection of scripts that make it painless to create, customize, and manage a C++ project from a single control file. It is built on top of Make and Shell scripts.
- Cross-platform Support
- Cross-compilation Support
- Build profiles for:
- Debug and Release builds
- OS: Windows, Linux, and Mac
- Arch: x86 and x86_64
- Test builds
- Reverse header dependency generation
- Static and Shared Library creation
- Out of source tree build output
- Header and library installation
- Packaging of release builds
- Documentation generation using Doxygen
- Batch script to launch Windows build
- Shell script to launch Linux/Mac build
- FreeDesktop.org's
.desktop
file generation/installation for Unix platforms - LinesOfCode calculation script using
cloc-1.60.pl
- Make a copy of the 'Project.mk' file and name it to your project's name.
cp Project.mk PROJECT_NAME.mk
-
Open it and fill in the Metadata, Directories, Build Targets and other Fields
-
Source files are automatically generated by detecting all
.cpp
files withinSRCDIR
. This can be customized for other languages, or you can list the files manually. -
Customize the Compilation settings. The 'FLAG' settings are applied to all targets. Settings for a specific target are added by the '_PROFILE' functions.
-
Once finished with customization, your Project can be generated using Make.
make PROJECT_NAME
- This will generate your Project into a folder named after your Project.
Your Project's main Project.mk
file contains all variable definitions needed
to customize the Project's scripts and Makefile. When make project
is executed
the Makefile includes all of the Project.mk
variables, then executes
MonsterBS.sh
. This script will create your Project's folder hierarchy, and
copy over relevant scripts from the tools
directory. The script will then
go through all of the copied files, and replace instances of $$VARIABLE_NAME
with the value set within the Project definition file. (Additions or Removals
of Project.mk
variables need to be reflected manually within the script.)
When you compile your Project with make
, it will include some of your
Project's settings. However, most scripts won't do this, changes to their
variables in Project.mk
won't be reflected until you regenerate your project
with MonsterBS.