build - 崇高文本3 : how to create a build system?

标签 build sublimetext3 ros catkin

我是 ROS用户。使用该框架,您通常定义一个工作目录:

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
// Here create your c++ packages

然后输入以下内容让系统编译您的软件包:

$ cd ~/catkin_ws/
$ catkin_make

但这意味着您应该至少再打开一个控制台,以调用命令:

$ catkin_make 

它会立即编译您在该工作目录中编写的所有包。

由于我使用 Sublime Text 3 编写软件,因此我希望能够从 Sublime 调用该函数 我经历过这个tutorial很多次,但我仍然不明白如何创建我的建筑系统。

我已经尝试过以下操作:

{
    "path": "~/workspace_ros",
    "cmd": ["catkin_make"]
}

但我收到以下错误消息:

[Errno 2] No such file or directory: 'catkin_make'
[cmd: ['catkin_make']]
[dir: /home/will/workspace_ros/src/flight_system/src/include]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]
[Finished]

我尝试了以下选项:

path
shell_cmd

但它仍然无法将catkin识别为编译命令

出了什么问题?

PS:在工作区中我已经有一个 CMakeLists.txt 文件。在 shell 中调用 catkin 可以正常编译一切。

最佳答案

我不确定这是否是实现这一目标的最佳方法,但这就是我所做的。请记住,我是为 winros 项目执行此操作的,因此对于常规 ROS 项目,您只需要稍微调整一下即可。

首先,我为该项目创建了一个构建系统,如下所示(因此将其附加到您的项目文件中):

"build_systems":
[
  {
    "name" : "ROS",
    "cmd" : ["$project_path/build.bat"],
    "working_dir" : "$project_path",

    "variants" : [
      {
        "name" : "Run",
        "cmd" : ["$project_path/run.bat"]
      }
    ]
  }
]

然后,我在项目的根目录(在您的情况下为 ~/workspace_ros)中创建了引用的 build.bat 和 run.bat 脚本。我创建这些脚本是因为构建/运行节点不仅仅是调用catkin_make。您还需要先调用设置脚本。

这是build.bat

@ECHO OFF

REM Basically, change the cwd to the project's root dir
SET ws_path=%~dp0
cd /D "%ws_path%"
call setup.bat
winros_make -i

您可能想将其更改为适合您的 Linux 系统的 bash 脚本,并调整脚本本身。这个想法是将您的 cwd 更改为项目的路径并调用安装文件并随后构建。

这是run.bat

@ECHO OFF

REM Call the setup script and launch the node
call "C:\opt\ros\hydro\x86\setup.bat"
roslaunch eyetracker_talker talker.launch

同样,您可能需要将其更改为 bash 脚本。就我而言,我使用 roslaunch 来运行节点。

最后,这为您提供了两个构建选项(构建和构建:运行)。两者的输出应显示在构建输出窗口中。

希望这有帮助。

关于build - 崇高文本3 : how to create a build system?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30563155/

相关文章:

python - 为 Sublime Text 3 安装 numpy

python - ROS 中 C++ 和 Python 都是必需的吗

python-2.7 - 在 ROS 中运行 tensorRT 时得到 "LogicError: explicit_context_dependent failed: invalid device context - no currently active context? "

android - 在 gradle 中添加对特定 productFlavor 和 buildType 的依赖

svn - Subversion - 时间戳发生变化,但内容不变

使用 cmd 和 pkg 布局去构建项目 - 构建错误

sublimetext3 - 如何在 Sublime Text 3 中更改背景和文本颜色

c# - Sublime Build System 在工作目录中找不到代码

python - 如何使用 python 脚本自动化 ROS 的终端命令

java - Maven 全新安装 : cannot find symbol