适合Linux嵌入式项目的代码构建与依赖管理工具——cazel
前言
我们知道,现在有很多流行的优秀代码构建工具,如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处于测试版本阶段,仍在进行不断的更新和完善。后续将会变得更加规范和易于使用。
适合Linux嵌入式项目的代码构建与依赖管理工具——cazel的更多相关文章
- maven——项目构建和依赖管理工具
apache maven是一个用于项目构建和依赖管理的工具. 添加archetype https://repo1.maven.org/maven2/archetype-catalog.xml 更改本地 ...
- JAVAEE——BOS物流项目02:学习计划、动态添加选项卡、ztree、项目底层代码构建
1 学习计划 1.jQuery easyUI中动态添加选项卡 2.jquery ztree插件使用 n 下载ztree n 基于标准json数据构造ztree n 基于简单json数据构造ztree( ...
- golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的
golang多个项目时如何配置GOPATH,使用gb包依赖管理工具,不同项目配置不同的GOPATH的 1:执行脚本setGoPath.sh#!/bin/bashif [[ $GOPATH =~ .*$ ...
- Maven01——简介、安装配置、入门程序、项目构建和依赖管理
1 Maven的简介 1.1 什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Svn eclipse maven量级 1.2 Maven好处 同 ...
- 无需编写代码,用接口管理工具 eoLinker 高效完成API测试流程相关业务
引言 作为开发人员,有时需要协助市场部门进行开发,比如在市场推广中,经常通过给用户赠送优惠券来提高复购率.这篇文章,将介绍如何使用接口管理工具 eoLinker 的自动化测试 [UI模式] 构建此业务 ...
- 将windows当做linux/Mac来用 scoop强大的包管理工具
在Linux中有apt-get.yum这些包安装管理 安装相当方便:如ubuntu安装一个mysql5.7,只需要一个简单的命令: apt-get 而在windows中需要在MySQL官网下载对应版本 ...
- Rust 之 cargo(项目构建和包管理工具)
如果食用cargo来进行项目构建: 1. 执行 cargo new hello_cargo --bin ,执行完上面的操作之后,我们切换到hell_cargo目录下,可以看到一个文件(Cargo.to ...
- 【htop】Linux CentOS 6.5下安装htop进程管理工具
一.Htop的使用简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (fo ...
- Python web 项目的依赖管理工具
Poetry可以帮助你声明.管理和安装Python项目的依赖项,确保你可以在任何地方都拥有正确的堆栈. Poetry支持Python 2.7 和Python 3以上 安装 Poetry提供了一个自定义 ...
随机推荐
- Struts 2 学习(一)
文章目录 @[toc] #Struts及其优势 Struts 2 是一个MVC框架,以WebWork设计思想为核心,吸收了Struts 1的部分优点. Struts 2拥有更加广阔的前景,自身功能强大 ...
- JYM虚拟机性能监控与故障处理工具
虚拟机性能监控与故障处理工具 一.jps:虚拟机进程状况工具 常用指令 二.jstat:虚拟机统计信息监视工具 常用指令 三.jinfo:配置信息工具 四.jmap:Java内存映像工具 常用指令 五 ...
- cisco 4500X 交换机限速
一.配置步骤 1.定义ACL以匹配数据流 ip access-list extended aclname 2.配置流量分类和策略 class-map [match-all(默认:完全符合)/Match ...
- TCP/IP__TCP协议常用协议默认端口号
- 前端html基础学习笔记二
表单 1 : 表单标签 <form></form> 属性 : action = '接口地址' method = 'get / post' name = '表单名称' 2 : 表 ...
- canal-adapter1.1.14最新版本安装的过程中出现的NullPointerException异常
记录一下我在安装 canal-adapter1.1.14最新版本安装的过程中出现的NullPointerException异常 以下是我的canal-adapter/logs文件夹内adapter.l ...
- redis-避免生产环境使用keys命令
redis作为内存数据库, 有着很高的性能, Redis能读的速度是110000次/s, 写的速度是81000次/s; 除了进行持久化操作时, redis采用的是单线程架构, 所以如果我们在开发中不恰 ...
- Web开发模型
1.服务器 web服务器:pc机器安装一个具有web服务的软件,称之位web服务器 数据库服务器:pc机器安装一个具有数据管理件服务的软件,称之为web服务器 邮件服务器:pc机器安装一个具有发送邮件 ...
- BSGS及其扩展
目录 定义 原理 朴素算法 数论分块 例题 Luogu2485 [SDOI2011]计算器 题解 代码 扩展 例题 Luogu4195 [模板]exBSGS/Spoj3105 Mod 代码 之前写了一 ...
- Codeforces Round #622 (Div. 2) A. Fast Food Restaurant(全排列,DFS)
Codeforces Round #622 (Div. 2) A. Fast Food Restaurant 题意: 你是餐馆老板,虽然只会做三道菜,上菜时还有个怪癖:一位客人至少上一道菜,且一种菜最 ...