2023-10-27 11:26:25 +02:00
|
|
|
====================
|
|
|
|
Compiling with CMake
|
|
|
|
====================
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2023-10-27 11:26:25 +02:00
|
|
|
Initialize Configuration with CMake
|
|
|
|
===================================
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2023-08-22 14:06:52 +02:00
|
|
|
The first step is to initialize NuttX configuration for a given board, based on
|
2020-09-11 23:55:50 +02:00
|
|
|
a pre-existing configuration. To list all supported configurations you can do:
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
.. code-block:: console
|
2020-09-04 23:00:59 +02:00
|
|
|
|
|
|
|
$ cd nuttx
|
|
|
|
$ ./tools/configure.sh -L | less
|
2020-10-18 18:48:44 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
The output is in the format ``<board name>:<board configuration>``. You will see that
|
2021-04-28 21:14:44 +02:00
|
|
|
generally all boards support the ``nsh`` configuration which is a good starting point
|
2020-09-11 23:55:50 +02:00
|
|
|
since it enables booting into the interactive command line
|
2020-10-20 10:40:45 +02:00
|
|
|
:doc:`/applications/nsh/index`.
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2023-10-27 11:26:25 +02:00
|
|
|
To choose a configuration you pass the ``<board name>:<board configuration>`` such as:
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
.. code-block:: console
|
2020-09-04 23:00:59 +02:00
|
|
|
|
|
|
|
$ cd nuttx
|
2023-10-27 11:26:25 +02:00
|
|
|
$ cmake -B build -DBOARD_CONFIG=stm32f4discovery:nsh -GNinja
|
2020-10-18 18:48:44 +02:00
|
|
|
|
2023-10-28 21:40:30 +02:00
|
|
|
The ``-B build`` tells what is the build directory.
|
2020-09-11 23:55:50 +02:00
|
|
|
|
2020-11-21 23:55:16 +01:00
|
|
|
You can then customize this configuration by using the menu based
|
|
|
|
configuration system with:
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
.. code-block:: console
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2022-03-16 18:08:00 +01:00
|
|
|
$ cd nuttx
|
2023-10-27 11:26:25 +02:00
|
|
|
$ cmake --build build -t menuconfig
|
2021-04-28 21:14:44 +02:00
|
|
|
|
2020-11-21 23:55:16 +01:00
|
|
|
Modifying the configuration is covered in :doc:`configuring`.
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2023-10-27 11:26:25 +02:00
|
|
|
Build NuttX with CMake
|
|
|
|
======================
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
We can now build NuttX. To do so, you can simply run:
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
.. code-block:: console
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2022-03-16 18:08:00 +01:00
|
|
|
$ cd nuttx
|
2024-02-14 14:03:45 +01:00
|
|
|
$ cmake --build build
|
2020-10-18 18:48:44 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
The build will complete by generating the binary outputs
|
2024-02-14 14:03:45 +01:00
|
|
|
inside ``build/`` directory. Typically this includes the ``nuttx``
|
2020-11-21 23:55:16 +01:00
|
|
|
ELF file (suitable for debugging using ``gdb``) and a ``nuttx.bin``
|
2020-10-18 18:48:44 +02:00
|
|
|
file that can be flashed to the board.
|
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
To clean the build, you can do:
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2020-09-11 23:55:50 +02:00
|
|
|
.. code-block:: console
|
2020-09-04 23:00:59 +02:00
|
|
|
|
2023-10-27 11:26:25 +02:00
|
|
|
$ cmake --build build -t clean
|