Bug 526549 - Extend CMake support (Toolchains, Single Targets, Cache Options, ...)
Summary: Extend CMake support (Toolchains, Single Targets, Cache Options, ...)
Status: NEW
Alias: None
Product: CDT
Classification: Tools
Component: cdt-core (show other bugs)
Version: Next   Edit
Hardware: All All
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-10-27 05:27 EDT by Nico Müller CLA
Modified: 2020-09-04 15:21 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nico Müller CLA 2017-10-27 05:27:45 EDT
Hello dear Community,

I've seen that eclipse cdt provides an experimental CMake support since 9.3.1 afaik.

In my opinion the current state is not sufficient for proper development. CMake brings a lot of possibilities that are currently not covered by eclipse. Due to personal interest I listed some improvments that I can think about.

Some Improvements I can think about are:

*Single Targets:
CMake organizes all outputs, like most of the other build-systems as well, as targets. So a target can represent i.e. a binary, a library or a any other command. It would be handy to read the information about all available targets from the CMake-Server and provide the developer the possibility to build, re-build and run each of them individually.

*Toolchain Files:
CMake is compiler independent build-system. On a normal run CMake tries to determine a matching compiler for a project by reading the host platform and the programming language. In some projects you want decide by your own which compiler CMake should use. This can be done by defining and selecting a so called toolchain-file. This also brings the possibility to cross compiler for other target platforms. The user should be allowed to switch between different toolchains in project.

*Native build-system (Generators):
CMake is so called meta build system. That means, that it is not running the actual build by its own but generates build pipelines for other build systems like Make, Ninja NMake or something else. CMake supports a lot of these so called generators. As a user I'd like to choose between those generators.

*Cache Variables:
The build pipeline of CMake can be configured by external variable inputs. As a user I'd like to set different inputs in different build configurations.

*Build types
Each build configuration should be buildable in each build type like "Debug", "Release" ...

*Editor and file linking
Different CMake files like "CMakeLists.txt" or "*.cmake" should be syntax highlighted.

For sure I am available to for further discussions on this topic and willing to help implementing these improvements.
Comment 1 Nico Müller CLA 2017-11-09 06:00:23 EST
It would be helpful if one of the core-devs could comment on this points. 

- Are there reasons why these things aren't considered until now?
- Are the points reasonable?
- Personal options are welcome, too.

Thanks.
Comment 2 Doug Schaefer CLA 2017-11-09 10:06:18 EST
It's probably a good exercise to take a look at what we've done already.

For example, "so called toolchain files" support is already there.

We are progressing slowly towards full CMake support. We can only go as fast as contributors contribute.