CLion project generator

Soong can generate CLion projects. This is intended for source code editing only. Build should still be done via make/m/mm(a)/mmm(a).

CMakeLists.txt project file generation is enabled via environment variable:

$ export SOONG_GEN_CMAKEFILES=1
$ export SOONG_GEN_CMAKEFILES_DEBUG=1

You can then trigger a full build:

$ make -j64

or build only the project you are interested in:

$ make frameworks/native/service/libs/ui

Projects are generated in the out directory. In the case of libui, the path would be:

out/development/ide/clion/frameworks/native/libs/ui/libui-arm64-android/CMakeLists.txt

Note: The generator creates one folder per targetname-architecture-os combination. In the case of libui you endup with two projects:

$ ls out/development/ide/clion/frameworks/native/libs/ui
libui-arm64-android libui-arm-android

Edit multiple projects at once

To combine several projects into one, you can create super projects and place them in:

development/ide/clion/[PATH_YOU_WANT]/..

These file will be symbolicaly linked in out/development/ide/clion. All folders will also be created there.

An example of a super project for surfaceflinger (using libui and libgui) located in development/ide/clion/frameworks/native:

cmake_minimum_required(VERSION 3.6)
project(native)
add_subdirectory(services/surfaceflinger)
add_subdirectory(libs/ui/libui-arm64-android)
add_subdirectory(libs/gui/libgui-arm64-android)

Flattened filesystem

Upon opening a project it looks like all the folder structure has been flattened:

Flattened View

This is because you need to change the project root. Via Tools > CMake > Change Project Root:

Unflattened View