3个版本 (稳定)
1.1.0 | 2023年3月20日 |
---|---|
1.0.1 | 2023年3月3日 |
0.2.0 | 2023年2月18日 |
在 文件系统 中排名第 750
每月下载量 26 次
33KB
781 行
symlinkccc
一个用于符号链接Catkin编译命令的工具。
入门指南
安装 rust,并确保它已在您的PATH中,通过将其添加到
test -f "${HOME}/.cargo/env" && source "${HOME}/.cargo/env"
您的 .bashrc
文件(或等效文件)中。
使用以下命令安装此包
cargo install symlinkccc
然后,在 catkin
工作空间中
catkin config --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
catkin build
symlinkccc
此命令非常快,特别是与平均的 catkin
构建时间相比,所以我为 catkin
创建了一个包装器,该包装器在每个 catkin build
之后执行 symlinkccc
程序,并传递任何参数。将其添加到您的 .bashrc
文件(或等效文件)中。
_catkin_wrapper () {
if (( $# == 0 ))
then
\catkin
else
if [[ $1 == "build" ]]
then
\catkin build ${@:2} && symlinkccc
else
\catkin $@
fi
fi
}
alias catkin="_catkin_wrapper"
为什么?
ROS 是一个在机器人领域工作时非常有用的框架,而 catkin
是一组非常有用的工具,用于构建和处理所有 ROS 软件包。 clangd
是一个很好的 C++ 编程语言语言服务器。然而,catkin
和 clangd
并不是真正的朋友...
clangd
需要一个 compile_commands.json
文件来理解软件包的依赖关系。这可以通过构建工具 cmake
生成,而 catkin
在底层调用它。要使 catkin
生成这些文件,请将 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
添加到 cmake
参数中,例如这样
catkin config --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
问题是 catkin 将 compile_commands.json
文件放置在每个单个软件包的构建文件夹中,而 clangd
想要它在每个软件包的源文件夹根目录中(因为与构建文件夹相比,您更有可能从源文件夹编辑代码)。ROS/catkin
的一个优点是
待办事项
如果有时间,我想探索的一些事情。我怀疑这将对实际性能的影响不大。
- 修复由于工作区名称为模块名称以及其他多个原因导致的警告
- 使用异步操作
- 异步处理源文件和构建目录
- 异步加载文件(package.xml/CMakeLists.txt)
- 异步链接不同文件
- 测试是否可以使用
cargo watch
来检查是否需要重新链接 - 尝试将
rospack
命令纯用Rust实现 - 看看是否可以为配置文件重新排列链接,而不是每次程序执行时都删除旧链接
- 通过消除不必要的依赖,尽量减小二进制文件的大小
- ROS能否在纯Windows上编译?如果是,则符号链接将不起作用。
依赖项
~6–15MB
~181K SLoC