预启动任务和启动可以在VSCode的同一终端内启动吗?

Can preLaunchTask and launch start within the same terminal in VSCode?

本文关键字:启动 终端 VSCode 任务      更新时间:2023-10-16

我正在使用VSCode调试我的CPP代码。我需要在代码运行之前使用 preLaunchTask 来设置我的环境。所以我的代码应该在 preLaunchTask 之后在同一终端中运行。但它现在从两个不同的终端开始。我该怎么做?

顺便说一句,下次我如何在同一个终端中启动该过程?下次某些进程将启动另一个终端,我很困惑。

我的预启动任务:

{
"label": "source_setup",
"type": "shell",
"command": "source ./devel/setup.zsh && export ROS_MASTER_URI=http://localhost:11311/ "
},

如@isidorn在此 vscode GitHub 问题中所述,此功能目前尚不受支持。同时,人们可以通过将以下代码添加到他们的.bashrc来实现所需的行为

# Source ros setup.bash if present
if [ -f '../devel/setup.bash' ]; then . "../devel/setup.bash";fi

如果您不想在任务运行后手动切换到终端,这里有一个很好的解决方法:

将此行添加到您的launch.json配置中:

"internalConsoleOptions": "openOnSessionStart"

这将在任务脚本完成运行后切换到终端视图。

我认为你可以只使用envFile属性。

在我的例子中,启动调试看起来像这样(这个由python使用,但它在运行之前也需要采购./devel/setup.bash(:

{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current ROS File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"envFile": "${workspaceFolder}/devel/setup.bash"
}
]
}