You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
4.3 KiB
120 lines
4.3 KiB
.. _vscode_ide: |
|
|
|
Visual Studio Code |
|
################## |
|
|
|
`Visual Studio Code`_ (VS Code for short) is a popular cross-platform IDE that supports C projects |
|
and has a rich set of extensions. |
|
|
|
This guide describes the process of setting up VS Code for Zephyr's |
|
:zephyr:code-sample:`blinky` sample in VS Code. |
|
|
|
The instructions have been tested on Linux, but the steps should be the same for macOS and |
|
Windows, just make sure to adjust the paths if needed. |
|
|
|
Get VS Code |
|
*********** |
|
|
|
`Download VS Code`_ and install it. |
|
|
|
Install the required extensions through the :guilabel:`Extensions` marketplace in the left panel. |
|
Search for the `C/C++ Extension Pack`_ and install it. |
|
|
|
Initialize a new workspace |
|
************************** |
|
|
|
This guide gives details on how to configure the :zephyr:code-sample:`blinky` |
|
sample application, but the instructions would be similar for any Zephyr project and :ref:`workspace |
|
layout <west-workspaces>`. |
|
|
|
Before you start, make sure you have a working Zephyr development environment, as per the |
|
instructions in the :ref:`getting_started`. |
|
|
|
Open the project in VS Code |
|
*************************** |
|
|
|
#. In VS Code, select :menuselection:`File --> Open Folder` from the main menu. |
|
|
|
#. Navigate to your Zephyr workspace and select it (i.e. the :file:`zephyrproject` folder in your |
|
HOME directory if you have followed the Getting Started instructions). |
|
|
|
#. If prompted, enable workspace trust. |
|
|
|
Generate compile commands |
|
************************* |
|
|
|
In order to support code navigation and linting capabilities, you must compile your project once to |
|
generate the :file:`compile_commands.json` file that will provide the C/C++ extension with the |
|
required information (ex. include paths): |
|
|
|
.. zephyr-app-commands:: |
|
:zephyr-app: samples/basic/blinky |
|
:board: native_sim/native/64 |
|
:goals: build |
|
:compact: |
|
|
|
Configure the C/C++ extension |
|
***************************** |
|
|
|
You'll now need to point to the generated :file:`compile_commands.json` file to enable linting and |
|
code navigation in VS Code. |
|
|
|
#. Go to the :menuselection:`File --> Preferences --> Settings` in the VS Code top menu. |
|
|
|
#. Search for the parameter :guilabel:`C_Cpp > Default: Compile Commands` and set its value to: |
|
``zephyr/build/compile_commands.json``. |
|
|
|
Linting errors in the code should now be resolved, and you should be able to navigate through the |
|
code. |
|
|
|
Additional resources |
|
******************** |
|
|
|
There are many other extensions that can be useful when working with Zephyr and VS Code. While this |
|
guide does not cover them yet, you may refer to their documentation to set them up: |
|
|
|
Contribution tooling |
|
==================== |
|
|
|
- `Checkpatch Extension`_ |
|
- `EditorConfig Extension`_ |
|
|
|
Documentation languages extensions |
|
================================== |
|
|
|
- `reStructuredText Extension Pack`_ |
|
|
|
IDE extensions |
|
============== |
|
|
|
- `CMake Extension documentation`_ |
|
- `nRF Kconfig Extension`_ |
|
- `nRF DeviceTree Extension`_ |
|
- `GNU Linker Map files Extension`_ |
|
|
|
Additional guides |
|
================= |
|
|
|
- `How to Develop Zephyr Apps with a Modern, Visual IDE`_ |
|
|
|
.. note:: |
|
|
|
Please be aware that these extensions might not all have the same level of quality and maintenance. |
|
|
|
.. _Visual Studio Code: https://code.visualstudio.com/ |
|
.. _Download VS Code: https://code.visualstudio.com/Download |
|
.. _VS Code documentation: https://code.visualstudio.com/docs |
|
.. _C/C++ Extension Pack: https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools-extension-pack |
|
.. _C/C++ Extension documentation: https://code.visualstudio.com/docs/languages/cpp |
|
.. _CMake Extension documentation: https://code.visualstudio.com/docs/cpp/cmake-linux |
|
|
|
.. _Checkpatch Extension: https://marketplace.visualstudio.com/items?itemName=idanp.checkpatch |
|
.. _EditorConfig Extension: https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig |
|
|
|
.. _reStructuredText Extension Pack: https://marketplace.visualstudio.com/items?itemName=lextudio.restructuredtext-pack |
|
|
|
.. _nRF Kconfig Extension: https://marketplace.visualstudio.com/items?itemName=nordic-semiconductor.nrf-kconfig |
|
.. _nRF DeviceTree Extension: https://marketplace.visualstudio.com/items?itemName=nordic-semiconductor.nrf-devicetree |
|
.. _GNU Linker Map files Extension: https://marketplace.visualstudio.com/items?itemName=trond-snekvik.gnu-mapfiles |
|
|
|
.. _How to Develop Zephyr Apps with a Modern, Visual IDE: https://github.com/beriberikix/zephyr-vscode-example
|
|
|