1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-03-28 14:56:28 +01:00
Find a file
betamax fe74d8dfee
Improve CMake build option handling and API (#1046)
Summary:

- Add some new API to make it easier for ISVs to provide defaults.
- Fully connect UI elements to CMake build process
- Add some missing UI elements (such as customizing generator)
- CMake generator default within CDT changed to Ninja

Details:

Add API to set CMake generator default (eg Ninja) ISV can set
their desired CMake generator by overriding
`CMakeBuildConfiguration.getDefaultProperties`. ISVs can also further
fine tune the build process by overriding
`CMakeBuildConfiguration.getDefaultProperties`

Remove API `IOsOverrides` and related code. `IOsOverrides` was a partial
implementation to achieve builds in Docker containers, however the
work was not complete and it the extra code was complicating some
basic use cases of setting defaults

Add support for all generators to CMake build settings UI page by
using a Combo instead of radio buttons. The non-deprecated generators
that are built-in to CDT populate the Combo, but additional generators
can be manually entered in the Combo.

Rename clean command to clean target to better reflect its use as
the argument passed to cmake's --target command line.

Add all target for the argument passed to cmake's --target
command line when doing a normal build.

Clarify usage of UI overrides and change the UI to be "use defaults"
(i.e. invert the checkbox). This is a **breaking** change as it means
user projects that were using UI overrides will revert to using defaults.
This is done on purpose as so many little things have changed in CMake
settings, that reverting to defaults on upgrade seems like a logical
decision. In addition *use defaults* matches the other GUIs in Eclipse,
for example the MBS build command settings.

Populate all defaults in getDefaultProperties() so that all CMake build
settings are displayed as used (greyed out) and can be used as a starting
point when editing settings.

Simplify some of the code in CMakeBuildTab.

Fix parsing of extra args so that quoted strings work.

Refactored manual tests document and brought it up to date.

Correct command line option for CMake's --warn-unused-vars

Correct command line option for CMake's --warn-uninitialized

Overall this is an API breaking change and the CHANGELOG-API.md has been
updated with all the API changes in and around ICMakeProperties,
including fixing typos in WarnUninitialized methods.

Fixes #1055
Fixes #818
Part of #1000

Co-authored-by: Jonah Graham <jonah@kichwacoders.com>
2025-01-27 12:31:38 -05:00
.github Try automatically re-running failed tests 2025-01-24 14:04:47 -05:00
.mvn Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
build Fixed CBS Makefile template for profiling. (#1043) 2025-01-20 11:45:27 -05:00
cmake Improve CMake build option handling and API (#1046) 2025-01-27 12:31:38 -05:00
codan Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
core Update maven dependencies to latest versions, especially Hamcrest 2025-01-16 14:57:42 -05:00
cross Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
debug Add native support for Windows on Arm64 (#971) 2024-12-28 10:48:30 -05:00
doc Fix "Creating a CMake Project" cross-reference 2025-01-14 21:14:59 +00:00
docker Update tests for GDB >= 12 for change in formatted values 2025-01-24 14:04:47 -05:00
dsf Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
dsf-gdb Add some extra info when terminate fails in tests 2025-01-24 14:04:47 -05:00
FAQ Publish bleeding edge builds to download.eclipse.org (#975) 2024-12-16 20:21:27 -05:00
images Document using DISPLAY when running UI tests 2022-11-21 12:14:05 -05:00
jenkins/pod-templates Update images to Dockerfiles from commit dfdc174b6d 2024-12-28 10:48:45 -05:00
jsoncdb Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
jtag Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
launch Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
launchbar Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
llvm Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
memory Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
native Update and refactor Dockerfiles to newer Ubuntu 2024-12-28 10:48:30 -05:00
NewAndNoteworthy Improve CMake build option handling and API (#1046) 2025-01-27 12:31:38 -05:00
releng Check that all xml files in CDT are well formed (#1053) 2025-01-22 16:38:40 -05:00
remote Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
terminal use UTF-8 as default encoding in the Terminal (#1020) 2025-01-17 09:25:06 -05:00
testsrunner Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
tools.templates Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
unittest Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
util Bump version to CDT 12.0.0 (#911) 2024-10-08 12:52:15 -04:00
visualizer Update to latest versions of build tools (#986) 2025-01-06 20:37:10 -05:00
windows Bump version to CDT 12.0.0 (#911) 2024-10-08 12:52:15 -04:00
.backportrc.json Fix target branch choices in new backport command usage (#851) 2024-06-28 19:27:22 -04:00
.clang-format Bug 568079: Reformat source code using clang-format 2020-10-31 20:13:42 -04:00
.gitattributes Font Awesome 4.7 2025-01-14 13:05:53 -05:00
.gitignore ignore top directory editor temp files 2022-12-03 11:14:33 -05:00
.project Filter nested projects from org.eclipse.cdt.root 2022-08-12 09:39:25 +02:00
BUILDING.md Update and refactor Dockerfiles to newer Ubuntu 2024-12-28 10:48:30 -05:00
CODE_OF_CONDUCT.md Split apart the README file and update Contributing file from the wiki 2022-08-04 12:23:12 -04:00
CONTRIBUTING.md Add link to new entry point for CDT calls (#838) 2024-06-21 14:26:20 -04:00
Downloads.md Publish bleeding edge builds to download.eclipse.org (#975) 2024-12-16 20:21:27 -05:00
GitHubMigration.md CDT Calls on hackmd 2022-11-09 10:56:55 -05:00
Jenkinsfile Reduce disk usage (#1009) 2025-01-15 10:13:22 -05:00
LICENSE Add missing root LICENSE file 2021-11-29 17:58:48 -05:00
NOTICE.md Cleanup CDT repo related to the docker + Java 21 updates 2024-04-26 20:26:40 -04:00
POLICY.md Cleanup CDT repo related to the docker + Java 21 updates 2024-04-26 20:26:40 -04:00
pom.xml Generate more of the documentation with asciidoc and automate more 2025-01-14 13:05:53 -05:00
README.md Add SonarQube for Eclipse to the list of addons for CDT (#997) 2025-01-09 10:30:36 -05:00
StandaloneDebugger.md Remove unneeded escapes in markdown 2023-01-28 20:57:31 -05:00
TESTING.md Bug579242: allow user to override CMake Settings (#683) 2024-02-07 13:52:58 -05:00

Eclipse CDT™ C/C++ Development Tools

Jenkins Jenkins tests GitHub Eclipse Marketplace GitHub contributors

The Eclipse CDT™ Project provides a fully functional C and C++ Integrated Development Environment based on the Eclipse platform. Features include: support for project creation and managed build for various toolchains, standard make build, source navigation, various source knowledge tools, such as type hierarchy, call graph, include browser, macro definition browser, code editor with syntax highlighting, folding and hyperlink navigation, source code refactoring and code generation, visual debugging tools, including memory, registers, and disassembly viewers.

Highlights of recent releases and release notes are available in the New & Noteworthy.

See also https://projects.eclipse.org/projects/tools.cdt and https://eclipse.org/cdt

Download

The recommended way to obtain Eclipse CDT is to download it as part of the complete Eclipse IDE for C/C++ Developers or Eclipse IDE for Embedded C/C++ Developers from the main Eclipse IDE download site.

Alternatively Eclipse CDT can be installed into an existing Eclipse installation using this p2 URL: https://download.eclipse.org/tools/cdt/releases/latest/ (see how)

Download Development Builds

Milestone builds of the Eclipse IDE for C/C++ Developers or Eclipse IDE for Embedded C/C++ Developers can be found on the Eclipse Downloads page by clicking on the Eclipse Developer Builds tab (only present when there is a milestone build newer than the latest release).

Alternatively, milestone builds of Eclipse CDT can be installed into an existing Eclipse installation using one of the p2 URLs in: https://download.eclipse.org/tools/cdt/builds (see how). See cdt.aggrcon for which milestone is currently contributed to Eclipse SimRel.

Bleeding edge continuous (aka nightly) builds are available for the main branch from the p2 software repository: https://download.eclipse.org/tools/cdt/builds/cdt/main/

Download older versions

Downloads links for older versions are available in Downloads.

Help & Support

The Eclipse CDT (C/C++ Development Tools) User Guide can be found in the Eclipse Help - C/C++ Development User Guide.

The Eclipse forum for C/C++ IDE (CDT) is for users to ask questions on how to use Eclipse CDT. It is monitored by fellow users in the community for support. Stack Overflow also has an eclipse-cdt tag that can be added to questions or searched for prevous similar questions.

The Eclipse CDT Plug-in Developer Guide can also be found in the Eclipse Help - CDT Plug-in Developer Guide.

There is an FAQ covering many commonly asked questions for both user and developers and a Contribution Guide for guidance on editing Eclipse CDT's source and submitting changes.

Reporting issues

Please report issues in the GitHub issue tracker.

Vendor Supplied Eclipse CDT

Did you get your version of Eclipse CDT from a vendor (such as a chip maker)? If so, they generally support their customers. In that case issues and support questions should be directed at the vendor in the first instance.

We encourage all vendors who are extending and redistributing Eclipse CDT to engage with the project and contribute fixes and improvements back to the Eclipse CDT project.

CDT LSP (LSP based C/C++ Editor)

The Eclipse CDT project also provides an LSP based C/C++ Editor. Please see the CDT LSP repo for more details on that project and the future plans for language server protocol and clangd support in Eclipse CDT.

Contributing

Contributions are always welcome!

Please bear in mind that this project is almost entirely developed by volunteers. If you do not provide the implementation yourself (or pay someone to do it for you), the bug might never get fixed. If it is a serious bug, other people than you might care enough to provide a fix.

Add-ons for CDT

There are many third-party addons for CDT to make it more productive.

  • CDT LSP: LSP based C/C++ Editor provided by the Eclipse CDT project
  • cmake4eclipse: This Eclipse plug-in automatically generates build-scripts for the Eclipse CDT managed build system from CMake scripts.
  • Sloeber: Eclipse Plugins based on Arduino toolchains or a enhanced Arduino IDE.
  • SonarQube for Eclipse: Eclipse plug-in for static analysis for quality and security issues in your C/C++ code directly inside the IDE.
  • CUTE: C++ unit testing plug-in
  • Bracketeer: Auto-comments on closing brackets and highlight of matching/mismatching brackets
  • And many more in the Eclipse Marketplace, for example, try the CDT tag

Have a tool that you want listed here? Please open a PR

Code of Conduct

This project follows the Eclipse Community Code of Conduct.

Migration from Gerrit, Bugzilla, Wiki, Eclipse Forums

In the summer of 2022 the Eclipse CDT project migrated from Gerrit, Bugzilla, Wiki, Eclipse Forums to GitHub based solutions. Please see GitHub Migration for more details.