前言

我们知道,现在有很多流行的优秀代码构建工具,如CMake、jetkins、bazel等。这些不同的构建工具在其应用的领域起到了举足轻重的作用。

但是,如果仔细研究就会发现,在嵌入式领域,构建工具几乎是一片空白。除过ROS项目可以使用其配套的catkin_make进行构建外,大部分的嵌入式项目仍在使用原始的CMake和人工管理依赖的方式进行构建。

这就造成一了些问题:如果将不同的模块代码合并管理,则在项目规模逐渐增大后,会造成几乎不可维护的恶果;如果将代码分开管理,又需要较多的人力去单独管理版本依赖。

显然,这两种问题都不是我们愿意面对的。而cazel,正是为了解决这些问题而出现的。

cazel是一款应用于Linux环境的轻量级代码构建与依赖管理工具。它其于linux shell开发,底层编译功能基于cmake,但风格上更接近bazel。特别是,它主要着重实现了bazel的亮点功能:通过配置文件进行依赖的管理与下载。当我们在cazel中配置好依赖时,只需要通过一条简单的指令,就可以完成依赖同步。这与bazel是一致的。由于底层使用cmake实现,cazel能更好的与传统的cmake项目进行整合,不像使用bazel时,需要编写大量的甚至是toolchain的配置来整合。毕竟,bazel的理念是在docker下工作,环境配置仅需一次即可,这一条件并不适合嵌入式环境,docker在嵌入式环境是不易铺展的。

安装

可以从github上获取cazel的代码:

git clone https://github.com/maxvalor/cazel

然后安装依赖和使用脚本进行简单的安装:

sudo apt install jq
sudo ./install.sh

安装成功后,即可使用cazel help获取帮助信息。

使用

cazel实际上是使用cmake进行编译,所以cazel可以完美的与cmake项目整合。在使用cazel时,只需要在标准的cmake项目中加入一个depends.json文件即可。如:

{
"config":{
"name": "mini_ros_sample",
"path": "depends",
"cmake": "",
"make": "-j8"
},
"depends": [
{
"local":[
],
"git":[
{
"name": "mini_ros",
"url": "https://github.com/maxvalor/mini_ros",
"branch": "master"
}
],
"ftp":[ ]
}
]
}

这个配置文件告诉json,当前的项目叫做“mini_ros_sample”,它的依赖文件下载目标为“depends”,当进行build时,默认的cmake参数为空,make参数为“-j8”。

然后它有一个依赖,这个依赖是一个git repo,其名字为“mini_ros”,地址为“https://github.com/maxvalor/mini_ros”,并且,我们要使用这个repo的“master”分支。

这个配置方式和bazel是十分相像的。相信使用过bazel的人会十分容易上手。

而当我们写好配置文件,想要同步时,可使用指令:

cazel sync mini_ros_sample

cazel即会自动的根本depends.json进行资源同步,下载相应的资源。

然后,通过指令:

cazel build mini_ros_sample

即可完成编译。

编译后,会在项目目录下生成build目标,可cd过去执行,也可以直接使用指令进行执行:

cazel exec mini_ros_sample sample

后记

目标cazel处于测试版本阶段,仍在进行不断的更新和完善。后续将会变得更加规范和易于使用。

最新文章

  1. 小菜学习Winform(二)WMPLib实现音乐播放器
  2. 注解:【基于主键的】Hibernate1->1关联
  3. C++中的异常处理(二)
  4. [iOS微博项目 - 2.6] - 获取微博数据
  5. html5实现渐变效果
  6. VS2008编写MFC程序--使用opencv2.4()
  7. CentOS 基础安装
  8. Inno Setup设定只运行一个安装包
  9. Git之”make sure you have the correct access…”
  10. KNN算法的补充
  11. Hadoop介绍和环境配置
  12. 从头到尾解析Hash表算法
  13. 一起学Android之Intent
  14. 深度原理与框架-图像超分辨重构-tensorlayer
  15. .NET里面 abstract class和Interface有什么区别以及用法的展现?
  16. VS2015应用NuGet
  17. CSS属性选择器和部分伪类
  18. HDU 2883 kebab(最大流)
  19. Hbase 教程-安装
  20. [Mac] 获取cpu信息

热门文章

  1. spark整合Phoenix相关案例
  2. SpringBoot整合JavaMail发送邮件
  3. 27.SELinux 安全子系统
  4. TCP/IP__TCP协议常用协议默认端口号
  5. 使用C#实现数据结构堆
  6. .NET使用DinkToPdf将HTML转成PDF
  7. poj 2653 线段相交裸题(解题报告)
  8. 7.Topic交换机之模拟文件分类
  9. 设计模式(二十三)——策略模式(Arrays源码分析)
  10. SQL优化汇总