|
| 1 | +//// |
| 2 | +Copyright (c) 2000-2024 QNX Software Systems and others |
| 3 | +This program and the accompanying materials |
| 4 | +are made available under the terms of the Eclipse Public License 2.0 |
| 5 | +which accompanies this distribution, and is available at |
| 6 | +https://www.eclipse.org/legal/epl-2.0/ |
| 7 | + |
| 8 | +SPDX-License-Identifier: EPL-2.0 |
| 9 | +//// |
| 10 | + |
| 11 | + |
| 12 | +// support image rendering and table of contents within GitHub |
| 13 | +ifdef::env-github[] |
| 14 | +:imagesdir: ../../images |
| 15 | +:toc: |
| 16 | +:toc-placement!: |
| 17 | +endif::[] |
| 18 | + |
| 19 | +// enable support for button, menu and keyboard macros |
| 20 | +:experimental: |
| 21 | + |
| 22 | += Core Build System |
| 23 | + |
| 24 | +The Core Build System is the successor of the legacy Managed Build |
| 25 | +System. |
| 26 | + |
| 27 | +The classical Makefile projects are based on the Managed Build System. |
| 28 | +Managed Build projects can generate a Makefile based on GUI controlled |
| 29 | +build configurations in the project properties. The user can |
| 30 | +manage the separate build configurations for Run and Debug. There is a |
| 31 | +notion of "active" build configuration, which is the one that gets |
| 32 | +built when the build button is pressed. |
| 33 | + |
| 34 | +The Core Build System is the basis for CMake projects and Core Build |
| 35 | +Makefile projects. The CDT LaunchBar plays a central role and is used |
| 36 | +for building and launching the program. The philosophy is "Build for |
| 37 | +launch". It simplifies the flow a lot. |
| 38 | + |
| 39 | +These are the main differences compared with the Managed Build System: |
| 40 | + |
| 41 | +* No build configurations. No build file (Makefile or |
| 42 | + CMakeLists.txt) generation. The user writes it by hand. A |
| 43 | + "helloworld" example build file can be created for new projects. |
| 44 | +* Each new project is created with a launch configuration tied to it. |
| 45 | +* Build settings are presented in the launch configuration Build Settings tab. |
| 46 | +* The LaunchBar determines Run or Debug mode for building. There is no |
| 47 | + concept of an active build configuration as there is in Managed |
| 48 | + Build projects. |
| 49 | +* Auto discovery. The project's macro definitions and include paths, |
| 50 | + needed for indexing, are extracted from the build step. For CMake |
| 51 | + projects, data is obtained from the generated JSON file. For Makefile |
| 52 | + projects, data is extracted from the build step console output. |
| 53 | +* Simpler wizards. Creation of a CMake project is via a simple one page |
| 54 | + wizard. Using existing code is simply done by creating a new project |
| 55 | + on top of the existing code. It is not necessary to import the project |
| 56 | + (menu:File[Import...]). |
| 57 | + |
| 58 | +Core Build connects CDT projects to industry standard external build |
| 59 | +systems like CMake, Makefile, and Meson. The removal of the CDT |
| 60 | +specific build configurations allow Core Build projects to be |
| 61 | +easily be shared with other IDEs, command-line use, and Continuous |
| 62 | +Integration (CI) flows. |
| 63 | + |
| 64 | +Thanks to the auto discovery, the indexing of the C/C++ code has |
| 65 | +improved, because all compilation flags are known per file. This is especially |
| 66 | +beneficial for projects that use multiple toolchains in one project. |
| 67 | + |
| 68 | +icon:arrow-circle-right[] link:pass:[../html/new_cmake_proj.html][Next: Creating a CMake project] |
0 commit comments