High-level migration strategies
Before migrating a software project to CMake, first, it pays to answer a few questions about the existing project and define what the endpoint should look like. At a very high level of abstraction, usually, software projects define how the following things are handled:
- How the individual parts of the software, that is, the libraries and executables, are compiled and how they are linked together
- Which external dependencies are used, how they are found, and how they are used in the project
- Which tests to build and how to run them
- How the software is to be installed or packaged
- Providing additional information such as license information, documentation, changelogs, and more
Some projects might only define a subset of the preceding points. But typically, these are the tasks that we, as developers, want to be handled in a project setup. Often, these tasks are defined in a structured way such as with Makefiles or IDE-specific...