Skip to content

Commit

Permalink
Description of the Core Build System.
Browse files Browse the repository at this point in the history
A brief explanation of what the Core Build System is for end users.
  • Loading branch information
ewaterlander committed Dec 12, 2024
1 parent f259d60 commit 80e1aae
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions doc/org.eclipse.cdt.doc.user/src/asciidoc/core_build_system.adoc
Original file line number Diff line number Diff line change
@@ -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.

0 comments on commit 80e1aae

Please sign in to comment.