| .. _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 |