zoukankan      html  css  js  c++  java
  • 适合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处于测试版本阶段,仍在进行不断的更新和完善。后续将会变得更加规范和易于使用。

  • 相关阅读:
    【原】费马小定理(Fermat little theorem)详解
    【原】水库抽样详解
    【原】模幂运算(Modular Exponentiation)算法
    【原】 POJ 3630 Phone List Trie树 解题报告
    【Joke】你可以去当程序员了
    【原】 POJ 3750 小孩报数问题 Joseph相关问题详解 解题报告
    【原】 POJ 3748 位操作 解题报告
    react 性能优化
    修改jsp文件,访问时没有变化。可能是修改了系统的时间,,,郁闷呢
    在Windows 7 下使用Visual Studio 2010 编写自动申请管理员权限运行的程序
  • 原文地址:https://www.cnblogs.com/qyit/p/14023603.html
Copyright © 2011-2022 走看看