github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/soong/docs/clion.md (about)

     1  # CLion project generator
     2  
     3  Soong can generate CLion projects. This is intended for source code editing
     4  only. Build should still be done via make/m/mm(a)/mmm(a).
     5  
     6  CMakeLists.txt project file generation is enabled via environment variable:
     7  
     8  ```bash
     9  $ export SOONG_GEN_CMAKEFILES=1
    10  $ export SOONG_GEN_CMAKEFILES_DEBUG=1
    11  ```
    12  
    13  You can then trigger a full build:
    14  
    15  ```bash
    16  $ make -j64
    17  ```
    18  or build only the project you are interested in:
    19  
    20  ```bash
    21  $ make frameworks/native/service/libs/ui
    22  ```
    23  
    24  Projects are generated in the ``out`` directory. In the case of libui, the path would
    25  be:
    26  
    27  ```bash
    28  out/development/ide/clion/frameworks/native/libs/ui/libui-arm64-android/CMakeLists.txt
    29  ```
    30  Note: The generator creates one folder per targetname-architecture-os combination.
    31  In the case of libui you endup with two projects:
    32  
    33  ```bash
    34  $ ls out/development/ide/clion/frameworks/native/libs/ui
    35  libui-arm64-android libui-arm-android
    36  ```
    37  
    38  ### Edit multiple projects at once
    39  To combine several projects into one, you can create super projects
    40  and place them in:
    41  
    42  ```bash
    43  development/ide/clion/[PATH_YOU_WANT]/..
    44  ```
    45  
    46  These file will be symbolicaly linked in ``out/development/ide/clion``. All folders
    47  will also be created there.
    48  
    49  An example of a super project for surfaceflinger (using libui and libgui)
    50  located in development/ide/clion/frameworks/native:
    51  
    52  ```
    53  cmake_minimum_required(VERSION 3.6)
    54  project(native)
    55  add_subdirectory(services/surfaceflinger)
    56  add_subdirectory(libs/ui/libui-arm64-android)
    57  add_subdirectory(libs/gui/libgui-arm64-android)
    58  ```
    59  
    60  
    61  ### Flattened filesystem
    62  
    63  Upon opening a project it looks like all the folder structure has been
    64  flattened:
    65  
    66  ![Flattened View](before.png "")
    67  
    68  This is because you need to change the project root. Via Tools > CMake >
    69  Change Project Root:
    70  
    71  ![Unflattened View](after.png "")
    72