【发布时间】:2020-02-05 21:44:18
【问题描述】:
我当前的项目工作流程如下:
- 构建项目(通过 catkin)
- 获取 setup.sh 脚本(由 catkin 生成,我不想修改)设置环境变量和可执行文件所需的名称。
- 运行“MyProgram”,它仅在获取“setup.sh”脚本后可用。
我希望能够在 Visual Studio Code 中调试我的项目。为此,我定义了一个通过 catkin 构建可执行文件的任务,名为“catkin build all”,并将第二个任务定义为:
{
"type": "shell",
"label": "load programs",
"command": "source /some_folder/setup.sh",
"group": "build",
"dependsOn": ["catkin build all"]
}
这是我的 lanuch.json 启动配置的“preLaunchTask”。
启动调试将正确编译项目,但执行失败并出现错误“启动:程序 myProgram 不存在”。如果 setup.sh 不是来源,则确实无法找到程序 MyProgram,但应该由“preLaunchTask”提供。
在我的 launch.json 中,我还可以将“program”设置为“/full/path/to/myProgram”而不是“myProgram”,但在这种情况下找不到共享库,因为 setup.sh 会处理那个。
我也尝试在 shell 上获取 setup.sh,然后从同一个 shell 启动 Visual Studio 代码,但这并没有解决“启动:程序 myProgram 不存在”的问题。
任务是否在不同的 shell 上运行?如何让 preLaunchTask 在与后续程序代码相同的 shell 中运行?或者关于如何让我的工作流程正常工作的任何其他提示?
【问题讨论】:
-
奇怪的是你为什么隐瞒你正在使用 ROS ? “setup.sh”、catkin_make 和启动文件的行为……是特定于 ROS 的。此外,我们没有关于您的流程的具体信息。你怎么能期待一个如此神秘的答案?准确说明你做了什么,你是如何执行你的任务的(通过 roslaunch ?别的东西?),启动文件的内容是什么,......我们无法猜测你做了什么。此外请记住,采购 devel.sh 只会影响当前的 shell 控制台。
-
我没有使用 ros 的经验,也没有设置我正在使用的工作流程。我编写了一个普通的 CMake 库,然后将其集成到 ros/catkin 项目中。我没有描述 ROS 部分,因为我不知道如何正确地做到这一点。我只是想知道是否有一种方法可以让 Visual Studio 代码源“setup.sh”,然后在同一个 shell 控制台上运行 myProgram,而不是据我所知,在单独的 shell 控制台中运行。
-
嗯,我明白了。我建议您关注ros tutorials,以便更好地了解您在做什么。您至少可以从第 1 步到第 16 步(您可以忽略 python 部分)进行初学者级别。无需更进一步(但如果你愿意,你可以)。本教程内容丰富,易于阅读(和复制),并且在过去处理 ROS 时帮助了我很多。我敢打赌这对你也会有很大的帮助:)
标签: c++ visual-studio-code gdb ros catkin