namespace makefile { /** @file README.dox @cond usemainpage @mainpage @endcond @ifnot usemainpage @page makefilelib Makefilelib @endif @brief This library provides a C++ OO-framework for creating makefiles to use with GNU Make. The following a well documented short example should illustrate the usage. For a more advanced example I recommend looking into the tester in test_makefilelib.cpp. @section usage Usage @subsection mimf MakefileItem and Makefile Each item that exists in the created makefile is encapsulated in an object of the abstract type MakefileItem. The class Makefile, currently a singleton, provides some general functionality. Most important it holds a vector of MakefileItems that are going to be output to the makefile. Therefore any MakefileItem that should appear in the actual makefile has to be added to the output list by calling MakefileItem::add. The MakefileItem then adds itself to the Makefile 's output list. The order of output is the order of adding. So it is important to add a VariableDef before a VariableRef is used, so that GNU Make will process the makefile correctly. To write to the actual makefile Makefile::writeMakefile is called. All MakefileItem s that have been added are written to the ostream. @note Makefile only holds pointers, so MakefileItem s can change after they have been added. Makefile does not take ownership. @attention All MakefileItem s added have to exist at the time Makefile::writeMakefile. So take care about out-of-scope auto-variables or otherwise destroyed objects. They remove themselves on destruction. And currently --as there was no need to implement a sophisticated remove method-- this resets the Makefile. So if there are parts of your makefile missing, it's mostly because you forgot to add them, or they were destroyed to early. @subsection mgr Manager To allow easy memory management the Manager was created to take over ownership of MakefileItem s. It just holds a vector of pointers of Manageable it owns and deletes them, when the Manager itself is destroyed. Using the manager you don't have to worry about deleting all your MakefileItem s. It can only delete heap-allocated objects of course (new). See \ref example.cpp "example" @note It's important to call Manager::own or Manager::own_add explicitly. Nothing is registered automatically. @section sa See also @ref example.cpp "Example" @subpage unicode @author Florian Achleitner */ }