General tools that can be used in many software projects is one of the most important pieces of the software life cycle. Most projects absolutely rely on a few well known and trusted tools in the design/execution phase. Toolchains are sets of software tools that work together. A great example of a generic framework in this area is the free, open source CMake.