The Core Build System is the successor of the legacy Managed Build System.
The classical Makefile projects are based on the Managed Build System. Managed Build projects can generate a Makefile based on GUI controlled build configurations in the project properties. The user can manage the separate build configurations for Run and Debug. There is a notion of "active" build configuration, which is the one that gets built when the build button is pressed.
The Core Build System is the basis for CMake projects and Core Build Makefile projects. The CDT LaunchBar plays a central role and is used for building and launching the program. The philosophy is "Build for launch". It simplifies the flow a lot.
These are the main differences compared with the Managed Build System:
-
No build configurations. No build file (Makefile or CMakeLists.txt) generation. The user writes it by hand. A "helloworld" example build file can be created for new projects.
-
Each new project is created with a launch configuration tied to it.
-
Build settings are presented in the launch configuration Build Settings tab.
-
The LaunchBar determines Run or Debug mode for building. There is no concept of an active build configuration as there is in Managed Build projects.
-
Auto discovery. The project’s macro definitions and include paths, needed for indexing, are extracted from the build step. For CMake projects, data is obtained from the generated JSON file. For Makefile projects, data is extracted from the build step console output.
-
Simpler wizards. Creation of a CMake project is via a simple one page wizard. Using existing code is simply done by creating a new project on top of the existing code. It is not necessary to import the project (
).
Core Build connects CDT projects to industry standard external build systems like CMake, Makefile, and Meson. The removal of the CDT specific build configurations allow Core Build projects to be easily be shared with other IDEs, command-line use, and Continuous Integration (CI) flows.
Thanks to the auto discovery, the indexing of the C/C++ code has improved, because all compilation flags are known per file. This is especially beneficial for projects that use multiple toolchains in one project.