This bachelor thesis is about designing and implementing a build system for C++ programs which is also configurable in C++.
The currently used build systems for C++ are hard to maintain, their structure and design lead to limitations. The first part of the task is to review these build systems, evaluating their advantages and mistakes. The requirements and specification of the new build system can be drew up based on the review.
The architecture of existing build systems is fair enough to be used as a basis, but the root cause of their limitations must be spotted, and avoided within the new build system. No programming languages but C++ should be involved, as determined by the concept. This requirement leads to easier maintenance and smoother communications between its modules.
The components of the new system can be organized into an object model, which determines the responsibility of each module. Using object-oriented programming principles provides proper flexibility for the system, because the behavior of objects can be customized anywhere needed.
After implementing the class hierarchy, there is a demonstration of customizing the compilation. The configuration files are standard C++ headers, its classes are instantiated and invoked by a small skeleton program. The system has a huge advantage compared to ordinary Unix systems: the primary interface is not a command line program but a C++ API that can be integrated by other top-level programs easier.