Про разработку кода и работу с проектами внутри контейнеров.
This commit is contained in:
parent
23a004b2a9
commit
45548997b8
52
dev-inside-containers.md
Normal file
52
dev-inside-containers.md
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
Про разработку кода в контейнерах — повседневную работу связанную с компиляцией исходного кода и запуском интерактивной отладкой.
|
||||||
|
### Использование возможностей `VSCode`
|
||||||
|
В оригинальной коммерческой версии `Visual Studio Code` есть возможность выполнять GNU/LLVM toolchain'ы внутри указанного контейнера. Реализуется эта функциональность прозрачной для пользователя установкой серверной части `Visual Studio Code` внутри контейнера, в процессе «подключения» к нему.
|
||||||
|
|
||||||
|
Набор устанавливаемых `extensions` для может быть такой:
|
||||||
|
[Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers), [clangd](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd), [CMake](https://marketplace.visualstudio.com/items?itemName=twxs.cmake), [CMake Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cmake-tools), [Code Runner](https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner),[CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb)
|
||||||
|
|
||||||
|
Быстрая установка возможна через «Launch VS Code Quick Open (`Ctrl+P`)»:
|
||||||
|
```
|
||||||
|
ext install ms-vscode-remote.remote-containers
|
||||||
|
ext install llvm-vs-code-extensions.vscode-clangd
|
||||||
|
ext install twxs.cmake
|
||||||
|
ext install ms-vscode.cmake-tools
|
||||||
|
ext install formulahendry.code-runner
|
||||||
|
ext install vadimcn.vscode-lldb
|
||||||
|
```
|
||||||
|
|
||||||
|
В таких редакциях как `Code-OSS`, `VSCodium` и т.п. данная функциональность отсутствует и `marketplace` не содержит `Dev Containers`/`ms-vscode-remote.remote-containers`.
|
||||||
|
|
||||||
|
#### Подключение к контейнеру
|
||||||
|
Один из вариантов подключиться к уже запущенному контейнеру:
|
||||||
|
- на вкладке `REMOTE EXPLORER`
|
||||||
|
- раскрыть список `Dev Containers`
|
||||||
|
- выбрать нужный и `Attach...` в контекстном меню
|
||||||
|
|
||||||
|
Если это первое подключение к контейнеру, то `Visual Studio Code` спросит какие из уже установленных `extensions` включить/задействовать на серверной части внутри контейнера. Т.е. вкладка `EXTENSIONS` будет содержать не два, а три раскрывающихся списка.
|
||||||
|
### Запуск контейнера
|
||||||
|
Проекты открываются, собираются и отлаживаются совершенно прозрачно, если контейнер был создан с монтированием локальной директории хостовой машины:
|
||||||
|
```shell
|
||||||
|
docker run -ti --name "aaabuilder" -h="aaa" --mount type=bind,source=/home/имяпользователя/projects,target=/home/имяпользователя/projects registry.git.peresvet.it/system-trace/agent-enviroments:builder
|
||||||
|
```
|
||||||
|
### Поддержка LSP-сервера
|
||||||
|
Про использование IDE/редакторов реализующих работу с синтаксисом через LSP-сервер `clangd`.
|
||||||
|
#### Установка `clangd` внутри `ALTLinux p10
|
||||||
|
В образе `builder` на базе `ALTLinux p10` отсутствует `clangd`. Если установить 17-ю версию вручную (или же согласившись на предложение IDE), то установится так же и более древняя версия `clangd`, на которую, фактически, и будет указывать символьная ссылка `/usr/bin/clangd`.
|
||||||
|
Потому для разработки внутри контейнера требуется выполнить вручную порядок действий схожий с таким:
|
||||||
|
```shell
|
||||||
|
apt-get install clangd17.0
|
||||||
|
rm /usr/bin/clangd
|
||||||
|
ln -s /usr/bin/clangd-17 /usr/bin/clangd
|
||||||
|
```
|
||||||
|
#### Наличие файла `compile_commands.json`
|
||||||
|
В настройках `Visual Studio Code` есть возможность указать:
|
||||||
|
```json
|
||||||
|
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json",
|
||||||
|
```
|
||||||
|
внутр файла `~/.config/Code/User/settings.json`. При успешном конфигурировании `cmake`-проекта файл `compile_commands.json` автоматически будет копироваться в корень проекта.
|
||||||
|
|
||||||
|
При конфигурировании `Seastar` через `python`-скрипт генерация `compile_commands.json` обеспечивается использованием флага:
|
||||||
|
```shell
|
||||||
|
./configure.py ... --compile-commands-json
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue
Block a user