CMake User Applications selection

Update documentation about building a new application and add instructions to add the app in CMake files.
This commit is contained in:
Jean-François Milants 2023-12-17 17:18:25 +01:00 committed by JF
parent e00b98b82c
commit f2996f54a8

View file

@ -59,7 +59,7 @@ and then the function `create` is called to create an instance of the app.
The list of user applications is generated at build time by the `consteval` function `CreateAppDescriptions()` The list of user applications is generated at build time by the `consteval` function `CreateAppDescriptions()`
in `UserApps.h`. This method takes the list of applications that must be built into the firmware image. in `UserApps.h`. This method takes the list of applications that must be built into the firmware image.
This list of applications is defined as a list `Apps` enum values named `UserAppTypes` in `Apps.h`. This list of applications is defined as a list `Apps` enum values named `UserAppTypes` in `Apps.h`.
For each application listed in `UserAppTypes`, an entry of type `AppDescription` is added to the array `userApps`. For each application listed in `UserAppTypes`, an entry of type `AppDescription` is added to the array `userApps`.
This entry is created by using the information provided by a template `AppTraits` This entry is created by using the information provided by a template `AppTraits`
that is customized for every user application. that is customized for every user application.
@ -159,6 +159,24 @@ If your application is a **user** application, you don't need to add anything in
everything will be automatically generated for you. everything will be automatically generated for you.
The user application will also be automatically be added to the app launcher menu. The user application will also be automatically be added to the app launcher menu.
Since the list of **user** application is generated by CMake, add a new `option` in the main [CMakeLists.txt file](../../CMakeLists.txt). The application will be built by default if the value is set to `True`. :
```cmake
option(ENABLE_APP_MYAPP "Enable the MyApp application" True)
```
The default value can be overridden by passing an additional parameter to the command line of CMake :
```cmake
$ cmake ... -DENABLE_APP_MYAPP=True ...
```
Then add your **user app** to the list of apps by calling `AddToListIfEnabled()` :
```cmake
AddToListIfEnabled(USERAPP_TYPES_LIST ${ENABLE_APP_MYAPP} "Apps::MyApp")
```
You should now be able to [build](../buildAndProgram.md) the firmware You should now be able to [build](../buildAndProgram.md) the firmware
and flash it to your PineTime. Yay! and flash it to your PineTime. Yay!