Skip to content

Switch to CMake for Linux desktop tooling #52751

@stuartmorgan-g

Description

@stuartmorgan-g

Currently the runner and plugins are built using Makefiles, and the flutter tool integrates accordingly. After more discussions and research, the plan is to switch to using CMake. Other options were considered, but CMake has the distinct advantage (for something we expect all Flutter developers to potentially have to interact with) of being widely used and thus familiar to more people—and therefore easier to get help with—than other options (meson, gn, etc.). It also has integration with a number of popular IDEs.

The work here:

  • Set up a workable CMake build for the apps and runners in the template.
  • Generate supporting CMake files rather than Makefile files in the tool during builds (e.g., for variables used by the backend script), and have it invoke CMake.
  • Update doctor to check for a sufficient version of CMake (probably 3.10 if we're okay without some of the latest features, for easy compatibility with Ubuntu 18.04).
  • Maybe add a CMake file to the engine artifacts, the way we do with the framework podfile on macOS/iOS, to reduce coupling of app build details to the framework. (If we do this, we'll need to enforce artifact population in the ephemeral directory prior to starting the build, rather than having it be driven from within the build, since we would need that file at generation time, before starting the build.)

I have the first two steps in progress, and will continue on that when I have time.

Metadata

Metadata

Labels

a: buildBuilding flutter applications with the toola: desktopRunning on desktopplatform-linuxBuilding on or for Linux specificallytoolAffects the "flutter" command-line tool. See also t: labels.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions