Browse Source
Added a docs page with tips for setting up VS Code's code completion to work in ZMK's source files. Info for other IDEs can be added here later as needed.xmkb
Joel Spadin
4 years ago
committed by
Pete Johanson
2 changed files with 140 additions and 0 deletions
@ -0,0 +1,139 @@ |
|||||||
|
--- |
||||||
|
title: IDE Integration |
||||||
|
sidebar_label: IDE Integration |
||||||
|
--- |
||||||
|
|
||||||
|
import Tabs from '@theme/Tabs'; |
||||||
|
import TabItem from '@theme/TabItem'; |
||||||
|
|
||||||
|
export const OsTabs = (props) => (<Tabs |
||||||
|
groupId="operating-systems" |
||||||
|
defaultValue="debian" |
||||||
|
values={[ |
||||||
|
{label: 'Debian/Ubuntu', value: 'debian'}, |
||||||
|
{label: 'Windows', value: 'win'}, |
||||||
|
{label: 'macOS', value: 'mac'}, |
||||||
|
{label: 'Raspberry OS', value: 'raspberryos'}, |
||||||
|
{label: 'Fedora', value: 'fedora'}, |
||||||
|
{label: 'VS Code & Docker', value: 'docker'}, |
||||||
|
] |
||||||
|
}>{props.children}</Tabs>); |
||||||
|
|
||||||
|
## Visual Studio Code |
||||||
|
|
||||||
|
Visual Studio Code needs to know some things about the project such as include |
||||||
|
paths and compiler paths before features such as code completion, go to definition, |
||||||
|
and graying out disabled code blocks will work. Fortunately, CMake can generate |
||||||
|
that configuration for us automatically. |
||||||
|
|
||||||
|
### Create a Compilation Database |
||||||
|
|
||||||
|
To configure `west` to tell CMake to generate a compilation database, open a |
||||||
|
terminal to the ZMK repository and run the following command: |
||||||
|
|
||||||
|
```sh |
||||||
|
west config build.cmake-args -- -DCMAKE_EXPORT_COMPILE_COMMANDS=ON |
||||||
|
``` |
||||||
|
|
||||||
|
Every [build](build-flash#building) will now update the database. You will |
||||||
|
need to build once to create the database before code completion will work. |
||||||
|
We'll tell Visual Studio Code where to find the database in the next step. |
||||||
|
|
||||||
|
:::note |
||||||
|
If you have set any other CMake arguments such as the path to your zmk-config, the |
||||||
|
above command will overwrite them. You should instead provide the flag to export |
||||||
|
compile commands and all other arguments surrounded by quotes. For example: |
||||||
|
|
||||||
|
```sh |
||||||
|
west config build.cmake-args -- "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DZMK_CONFIG=/path/to/zmk-config/config" |
||||||
|
``` |
||||||
|
|
||||||
|
::: |
||||||
|
|
||||||
|
### Create a C/C++ Configuration |
||||||
|
|
||||||
|
Install the [C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools), |
||||||
|
then run **F1 > C/C++: Edit Configurations (UI)**. It should automatically create |
||||||
|
a new configuration for you, but if the text box under **Configuration name** is empty, |
||||||
|
click **Add Configuration**, enter a name, and click **OK**. |
||||||
|
|
||||||
|
Change these options: |
||||||
|
|
||||||
|
| Option | Value | |
||||||
|
| ------------------------------------- | ---------------------------------------------------- | |
||||||
|
| Compiler path | Path to your toolchain's GCC binary (see below) | |
||||||
|
| IntelliSense mode | gcc-arm | |
||||||
|
| Advanced Settings > Compiler commands | `${workspaceFolder}/app/build/compile_commands.json` | |
||||||
|
|
||||||
|
<OsTabs> |
||||||
|
<TabItem value="debian"> |
||||||
|
|
||||||
|
Open VS Code's integrated terminal and run the following commands. It will print |
||||||
|
your compiler path. |
||||||
|
|
||||||
|
```sh |
||||||
|
source zephyr/zephyr-env.sh |
||||||
|
echo ${ZEPHYR_SDK_INSTALL_DIR}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc |
||||||
|
``` |
||||||
|
|
||||||
|
:::note |
||||||
|
You will need to update this path any time you switch to a new version of the Zephyr SDK. |
||||||
|
::: |
||||||
|
|
||||||
|
</TabItem> |
||||||
|
<TabItem value="win"> |
||||||
|
|
||||||
|
Your compiler path is |
||||||
|
|
||||||
|
``` |
||||||
|
${env:GNUARMEMB_TOOLCHAIN_PATH}/bin/arm-none-eabi-gcc.exe |
||||||
|
``` |
||||||
|
|
||||||
|
This assumes `GNUARMEMB_TOOLCHAIN_PATH` is set in your system or user environment variables. |
||||||
|
If not, you will need to list the full path instead of using the `${env}` placeholder. |
||||||
|
|
||||||
|
</TabItem> |
||||||
|
<TabItem value="mac"> |
||||||
|
|
||||||
|
Open VS Code's integrated terminal and run the following command. It will print |
||||||
|
your compiler path. |
||||||
|
|
||||||
|
```sh |
||||||
|
echo ${GNUARMEMB_TOOLCHAIN_PATH}/bin/arm-none-eabi-gcc |
||||||
|
``` |
||||||
|
|
||||||
|
</TabItem> |
||||||
|
<TabItem value="raspberryos"> |
||||||
|
|
||||||
|
Your compiler path is |
||||||
|
|
||||||
|
``` |
||||||
|
/usr/bin/arm-none-eabi-gcc |
||||||
|
``` |
||||||
|
|
||||||
|
</TabItem> |
||||||
|
<TabItem value="fedora"> |
||||||
|
|
||||||
|
Open VS Code's integrated terminal and run the following commands. It will print |
||||||
|
your compiler path. |
||||||
|
|
||||||
|
```sh |
||||||
|
source zephyr/zephyr-env.sh |
||||||
|
echo ${ZEPHYR_SDK_INSTALL_DIR}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc |
||||||
|
``` |
||||||
|
|
||||||
|
:::note |
||||||
|
You will need to update this path any time you switch to a new version of the Zephyr SDK. |
||||||
|
::: |
||||||
|
|
||||||
|
</TabItem> |
||||||
|
<TabItem value="docker"> |
||||||
|
|
||||||
|
Your compiler path is |
||||||
|
|
||||||
|
``` |
||||||
|
${env:ZEPHYR_SDK_INSTALL_DIR}/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc |
||||||
|
``` |
||||||
|
|
||||||
|
</TabItem> |
||||||
|
</OsTabs> |
Loading…
Reference in new issue