我正在开发一个docker容器化的c++项目,该项目定义了shell脚本来设置编译和调试的环境(使用"source"(。它们有很多环境变量,可以随时更改,所以很难将它们全部移动到launch.json文件中(而且很难跟上(,所以我需要在编译或调试之前调用它们。
脚本只需要运行一次,所以如果有办法在连接到容器后运行它们,那将是最好的解决方案,但我找不到这样的解决方案。
我曾尝试在调试之前使用启动器中的"preLaunchTask"来运行任务,但该任务的shell似乎与调试shell不同。
有什么可以处理的吗?
目前,我正在使用一个任务来生成.env文件
printenv > ${workspaceFolder}/.preenv && . ${workspaceFolder}/setupEnv &&
printenv > ${workspaceFolder}/.postenv && grep -vFf
${workspaceFolder}/.preenv ${workspaceFolder}/.postenv >
${workspaceFolder}/.env
我让VSCode挂载一个目录作为容器的homedir,然后在该目录中放入一个包含必要设置的.bash_profile
文件(或其他合适的shell启动文件(。
我的/path/to/.devcontainer/devcontainer.json
包括:
"mounts": [
"source=${localWorkspaceFolder}/.devcontainer/home,target=/home/username,type=bind,consistency=delegated"
],
"remoteUser": "username",
"userEnvProbe": "loginShell", // Ensures .bash_profile fires
然后,我的/path/to/.devcontainer/home/.bash_profile
包含设置环境所需的调用。