diff --git a/doc/org.eclipse.cdt.doc.user/src/asciidoc/core_build_system.adoc b/doc/org.eclipse.cdt.doc.user/src/asciidoc/core_build_system.adoc new file mode 100644 index 00000000000..2e3cbb3b85c --- /dev/null +++ b/doc/org.eclipse.cdt.doc.user/src/asciidoc/core_build_system.adoc @@ -0,0 +1,57 @@ +//// +Copyright (c) 2000-2024 QNX Software Systems and others +This program and the accompanying materials +are made available under the terms of the Eclipse Public License 2.0 +which accompanies this distribution, and is available at +https://www.eclipse.org/legal/epl-2.0/ + +SPDX-License-Identifier: EPL-2.0 +//// + + +// support image rendering and table of contents within GitHub +ifdef::env-github[] +:imagesdir: ../../images +:toc: +:toc-placement!: +endif::[] + +// enable support for button, menu and keyboard macros +:experimental: + += Core Build System + +The Core Build System is the successor of the 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 simplified the flow a lot. + +These are the main differences with the old 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. +* A project gets immediately a launch configuration tied to it. +* Build settings are in the launch configuration Build Settings tab. +* The LaunchBar determines Run or Debug mode for building. There is no + more concept of an active build configuration like in the 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 this is done via the generated JSON file. For Makefile + projects it is extracted from the build step console output. +* Using existing code is simply done by creating a new project on top + of the existing code. No more project import. + +Thanks to the auto discovery the indexing of the C/C++ code has +improved, because all compilation flags are known per file. Especially +for projects that use multiple toolchains in one project.