| { |
| "name": "CMake", |
| "build": { |
| "dockerfile": "Dockerfile" |
| }, |
| "remoteUser": "cmake-dev", |
| // Name the workspace path explicitly rather than take the default a tool |
| // picks for itself, so that the path is the same under every tool and in |
| // the CI job of `.gitlab/ci/devcontainer-run.sh`, which mounts the source |
| // tree itself. `create_user.sh` creates the directory and gives it to the |
| // container user. |
| "workspaceFolder": "/home/cmake-dev/workspace", |
| "workspaceMount": "source=${localWorkspaceFolder},target=/home/cmake-dev/workspace,type=bind", |
| "containerEnv": { |
| "GITLAB_HOST": "gitlab.kitware.com" |
| }, |
| "remoteEnv": { |
| "GITLAB_CLIENT_ID": "${localEnv:GITLAB_CLIENT_ID}", |
| "GITLAB_TOKEN": "${localEnv:GITLAB_TOKEN}" |
| }, |
| "mounts": [ |
| { |
| "type": "volume", |
| "source": "cmake-dev-ccache", |
| "target": "/home/cmake-dev/.cache/ccache" |
| }, |
| { |
| "type": "volume", |
| "source": "cmake-dev-glab-cli", |
| "target": "/home/cmake-dev/.config/glab-cli" |
| } |
| ], |
| // Run the optional local customization hooks. Each phase is a no-op unless |
| // the developer has written that hook. See `Help/dev/devcontainer.rst`. |
| // |
| // Each is written as a named entry, the form that runs entries concurrently |
| // and says which one is speaking. Only `postAttachCommand` has two, but |
| // naming the hook everywhere keeps its output labeled the same way, and |
| // leaves room for a second entry beside it. |
| // |
| // `initializeCommand` runs on the host, so unlike the others it needs a |
| // POSIX shell there; naming `sh` explicitly, in the form that starts no |
| // shell of its own, is what makes that work outside a Unix host. |
| "initializeCommand": { |
| "hooks": [ |
| "sh", |
| "${localWorkspaceFolder}/.devcontainer/run-hooks.sh", |
| "initialize" |
| ] |
| }, |
| "postCreateCommand": { |
| "hooks": [ |
| "${containerWorkspaceFolder}/.devcontainer/run-hooks.sh", |
| "post-create" |
| ] |
| }, |
| "postStartCommand": { |
| "hooks": [ |
| "${containerWorkspaceFolder}/.devcontainer/run-hooks.sh", |
| "post-start" |
| ] |
| }, |
| "postAttachCommand": { |
| "setup-status": ["${containerWorkspaceFolder}/.devcontainer/setup-status.sh"], |
| "hooks": [ |
| "${containerWorkspaceFolder}/.devcontainer/run-hooks.sh", |
| "post-attach" |
| ] |
| }, |
| "customizations": { |
| "vscode": { |
| "extensions": [ |
| "EditorConfig.EditorConfig", |
| "ms-vscode.cmake-tools", |
| "ms-vscode.cpptools", |
| "lextudio.restructuredtext", |
| "llvm-vs-code-extensions.vscode-clangd" |
| ], |
| "settings": { |
| "C_Cpp.clang_format_path": "/usr/bin/clang-format-18", |
| "cmake.configureOnOpen": false |
| } |
| } |
| } |
| } |