Skip to content

Commit 9181e64

Browse files
committed
Clangd set-up tutorial
1 parent 4043da2 commit 9181e64

File tree

1 file changed

+68
-8
lines changed

1 file changed

+68
-8
lines changed

README.md

+68-8
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,13 @@ docker run -d -it --name pico-sdk --mount type=bind,source=${PWD},target=/home/d
4040
docker exec -it pico-sdk /bin/sh
4141
```
4242

43-
## Attach VSCode to running container
43+
## Visual Studio Code as Rassberry Pi PICO projects IDE
4444

45-
You can use the SDK container with Visual Studio Code, follow the instruction below:
45+
You can use the SDK container with Visual Studio Code as Raspberry Pi Pico projects IDE.
46+
47+
### Attaching VSCode to SDK Docker container
48+
49+
Follow the instruction below to set up VSCode:
4650

4751
1. Install [Visual Studio Code](https://code.visualstudio.com) and next [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extensions.
4852

@@ -60,22 +64,78 @@ docker exec -it pico-sdk /bin/sh
6064

6165
4. Click the green button in the lower left corner of VSCode and select options: Attach to Running Container...
6266

63-
![imag-2](https://user-images.githubusercontent.com/20487002/201382466-0204a11c-8487-4da5-8a3c-2c9cc233333c.png)
67+
![image-2](https://user-images.githubusercontent.com/20487002/201382466-0204a11c-8487-4da5-8a3c-2c9cc233333c.png)
6468

65-
![imag-3](https://user-images.githubusercontent.com/20487002/201382561-41e4c75e-3424-4c50-99ac-f6bc76ec6892.png)
69+
![image-3](https://user-images.githubusercontent.com/20487002/201382561-41e4c75e-3424-4c50-99ac-f6bc76ec6892.png)
6670

6771
5. Select the SDK container.
6872

69-
![imag-4](https://user-images.githubusercontent.com/20487002/201383009-54a3fc62-1206-4105-83d0-d956448434dd.png)
73+
![image-4](https://user-images.githubusercontent.com/20487002/201383009-54a3fc62-1206-4105-83d0-d956448434dd.png)
7074

7175
6. Then a new VSCode window will open. At the bottom window, you can see that it is attached to the SDK container.
7276

73-
![imag-5](https://user-images.githubusercontent.com/20487002/201383452-10573842-de2a-46c3-9ebf-f6fd5f06c687.png)
77+
![image-5](https://user-images.githubusercontent.com/20487002/201383452-10573842-de2a-46c3-9ebf-f6fd5f06c687.png)
7478

7579
7. Now, there is needed to open project files. Your project is mounted to `/home/dev` in the container. Go to EXPLORE tab in VSCode and click Open Folder. In opened window write `/home/dev` and click the OK button.
7680

77-
![imag-6](https://user-images.githubusercontent.com/20487002/201386202-dd0934b2-5fae-4a2d-8875-f2cb40b1dc59.png)
81+
![image-6](https://user-images.githubusercontent.com/20487002/201386202-dd0934b2-5fae-4a2d-8875-f2cb40b1dc59.png)
7882

7983
8. Now You can explore, develop and build your Raspberry Pi Pico project via Visual Studio Code!
8084

81-
![imag-7](https://user-images.githubusercontent.com/20487002/201389505-d1346622-a8e1-4d0b-842c-57e5b54f9183.png)
85+
![image-7](https://user-images.githubusercontent.com/20487002/201389505-d1346622-a8e1-4d0b-842c-57e5b54f9183.png)
86+
87+
### Pico SDK aware Intellisense
88+
89+
For an IntelliSense that will be aware of Raspberry Pi Pico SDK dependencies, we will use [Clangd](https://clangd.llvm.org). Clangd is a language server provided by the LLVM project. To Setup Clang as Intellisense engine follow instruction below:
90+
91+
1. To begin with, you need to install the server itself (Clangd is not installed by default in the SDK container image), to do this in the terminal call the command:
92+
93+
```
94+
apk add clang-extra-tools
95+
```
96+
97+
2. Next is needed to install the Visual Studio Code [Clangd extension](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd).
98+
99+
![image-1](https://user-images.githubusercontent.com/20487002/201468256-be7741a2-9092-406a-8be1-d4d9640a85e7.png)
100+
101+
1. To set-up The Clangd extension, in the project root directory, create folder .vcode with file settings.json. To settings.json past configuration from the snippet below:
102+
103+
```json
104+
{
105+
"C_Cpp.intelliSenseEngine": "Disabled",
106+
"clangd.path": "/usr/bin/clangd",
107+
"clangd.checkUpdates": false,
108+
"clangd.restartAfterCrash": true,
109+
"clangd.detectExtensionConflicts": true,
110+
"clangd.arguments": ["-log=verbose",
111+
"-pretty",
112+
"--background-index",
113+
"--query-driver=/usr/bin/arm-none-eabi-gcc",
114+
"--compile-commands-dir=/home/dev/build"]
115+
}
116+
```
117+
118+
![image-2](https://user-images.githubusercontent.com/20487002/201468479-7de7e598-3aac-4fe4-a240-d7404200a0a6.png)
119+
120+
121+
4. For clangd to work, it needs a `compile_commands.json` file. This file contains the compilation and dependency information of each file in the project. To create it you need to add to the CMake command, `-DCMAKE_EXPORT_COMPILE_COMMANDS=1`. So You need to build your project with the command:
122+
123+
```
124+
mkdir build
125+
126+
cd build
127+
128+
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..
129+
130+
make
131+
```
132+
133+
5. Now IntelliSense should work!. Now you should see a prompt when you start typing. If you hover your cursor over a function from the SDK you should see its documentation, You can go to the function definition by pressing F12.
134+
135+
![image-3](https://user-images.githubusercontent.com/20487002/201468773-61b77d65-3a9b-4e18-b5f1-a294e1ad0ec3.png)
136+
137+
![image-4](https://user-images.githubusercontent.com/20487002/201468782-50fc6abb-1f82-49d5-8b93-631dd30f1f58.png)
138+
139+
![image-5](https://user-images.githubusercontent.com/20487002/201468813-2ef7b04f-ede6-46cb-84e2-a40db595811d.png)
140+
141+

0 commit comments

Comments
 (0)