5.0 KiB
Про разработку кода в контейнерах — повседневную работу связанную с компиляцией исходного кода и запуском интерактивной отладкой.
Использование возможностей VSCode
В оригинальной коммерческой версии Visual Studio Code есть возможность выполнять GNU/LLVM toolchain'ы внутри указанного контейнера. Реализуется эта функциональность прозрачной для пользователя установкой серверной части Visual Studio Code внутри контейнера, в процессе «подключения» к нему.
Набор устанавливаемых extensions для может быть такой:
Dev Containers, clangd, CMake, CMake Tools, Code Runner,CodeLLDB
Быстрая установка возможна через «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 будет содержать не два, а три раскрывающихся списка.
Запуск контейнера
Проекты открываются, собираются и отлаживаются совершенно прозрачно, если контейнер был создан с монтированием локальной директории хостовой машины:
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.
Потому для разработки внутри контейнера требуется выполнить вручную порядок действий схожий с таким:
apt-get install clangd17.0
rm /usr/bin/clangd
ln -s /usr/bin/clangd-17 /usr/bin/clangd
Наличие файла compile_commands.json
В настройках Visual Studio Code есть возможность указать:
"cmake.copyCompileCommands": "${workspaceFolder}/compile_commands.json",
внутр файла ~/.config/Code/User/settings.json. При успешном конфигурировании cmake-проекта файл compile_commands.json автоматически будет копироваться в корень проекта.
При конфигурировании Seastar через python-скрипт генерация compile_commands.json обеспечивается использованием флага:
./configure.py ... --compile-commands-json