在VSCode中,preLaunchTask和launch能否在同一个终端内启动?

13

我正在使用VSCode调试我的CPP代码。在运行代码之前,我需要使用preLaunchTask来设置我的环境。因此,我的代码应该在同一个终端中的preLaunchTask之后运行。但现在它会在两个不同的终端中启动。我该怎么办?

另外,下一次如何在同一个终端中启动进程呢?有些进程下一次会在另一个终端中启动,我很困惑。

我的preLaunchTask:

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

4
根据@isidornvscode GitHub问题中的陈述,当前还不支持此功能。同时,人们可以通过将以下代码添加到他们的.bashrc来实现所需的行为。
# Source ros setup.bash if present
if [ -f '../devel/setup.bash' ]; then . "../devel/setup.bash";fi

0

我认为你可以直接使用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"
        }
    ]
}

0
如果您不想在任务运行后手动切换到终端,这里有一个好的解决方法:
将以下行添加到您的launch.json配置中:
"internalConsoleOptions": "openOnSessionStart"

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接