blade是腾讯推出的一个构建工具。本来感觉很新奇,后来发现了:Bazel,才发现blade原来是学Bazel的,很多方面都很像。

仓库地址:chen3feng/blade-build: A powerful build system from Tencent, support many mainstream programming languages, such as C/C++, java, scala, python, protobuf…

先自己安装python2或者python3,然后安装scons

sv=3.1.0
wget http://prdownloads.sourceforge.net/scons/scons-$sv.tar.gz
tar -xf scons-$sv.tar.gz
sudo python3 scons-$sv/setup.py install

然后进行安装:

git clone https://github.com/chen3feng/blade-build.git
cd blade-build
./install
-> # ls -l `which blade`
lrwxrwxrwx 1 root root 36 Jul 23 22:40 /root/bin/blade -> /home/zhang/blade-build-master/blade

Blade要求项目源代码有一个明确的根目录,C++ 中的 #include 的路径也需要从这个目录开始写起,这个目录成为工作空间

Blade并不从某个配置文件或者环境变量读取这个信息,因为开发人员往往需要同时有多个工作空间并存。 Blade获取当前工作空间的方法是,无论当前从哪一级子目录运行,都从当前目录开始向上查找BLADE_ROOT文件,有这个文件的目录即为工作空间。

测试:

mkdir test && cd test
touch BLADE_ROOT #建空文件
touch BUILD hello.cpp

BUILD内容如下:

cc_binary(name = 'hello_test',srcs = ['hello.cpp'])

hello.cpp内容如下:

#include <iostream>
//using namespace std;
int main() {std::cout << "Hello World" << std::endl;
}

然后编译:

blade build .

会报错:

scons: Reading SConscript files ...
Blade(warning): Failed to get version control info in proj
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build64_release
cc1plus: error: thirdparty: No such file or directory [-Werror=missing-include-dirs]
cc1plus: some warnings being treated as errors
scons: *** [build64_release/proj/hello_test.objs/hello.cpp.o] Error 1
scons: building terminated because of errors.
Blade(error): building failure.
Blade(error): failure

这是因为GitHub仓库中默认的配置是存在问题的,修改文件blade.conf

cd blade-build
nano blade.conf

把第二行用#号注释了:

#    extra_incs='thirdparty',

然后编译就可以了:

-> # blade build .
Blade: Entering directory `/root/test'
Blade(info): loading config file "/root/blade-build/blade.conf"
Blade(info): loading config file "/root/test/BLADE_ROOT"
Blade(info): loading BUILDs...
Blade(info): loading done.
Blade(info): analyzing dependency graph...
Blade(info): analyzing done.
Blade(info): generating build rules...
Blade(warning): Unsupported C/C++ flags: -Werror=format-nonliteral
Blade(info): generating done.
Blade(info): building...
Blade(info): tunes the parallel jobs number(-j N) to be 2
scons: Reading SConscript files ...
Blade(warning): Failed to get version control info in .
scons: done reading SConscript files.
scons: Building targets ...
scons: building associated VariantDir targets: build64_release
scons: done building targets.se/hello_test
Blade(info): building done.
Blade(info): cost time 3s

可以运行了:

-> # cd build64_release
-> # ./hello_test
Hello World

更多内容参考:浅谈blade中C++Build的设计与实现 | 云烟记事录

Debian/Ubuntu--blade安装与使用相关推荐

  1. Linux :debian(ubuntu)下安装和使用haskell

    文章目录 Linux :debian(ubuntu)下安装haskell 安装 使用 Linux :debian(ubuntu)下安装haskell 安装 直接使用apt进行安装: sudo apt- ...

  2. Linux: debian/ubuntu下安装和使用Java 11

    Linux: debian/ubuntu下安装和使用Java 11 只需6行命令: su - echo "deb http://ppa.launchpad.net/linuxuprising ...

  3. Linux: debian/ubuntu下安装和使用Java 8

    Linux: debian/ubuntu下安装和使用Java 8 7行命令解决问题: su - echo "deb http://ppa.launchpad.net/webupd8team/ ...

  4. Linux: debian/ubuntu下安装Neo4j

    文章目录 Linux: debian/ubuntu下安装Neo4j Linux: debian/ubuntu下安装Neo4j Neo4j的官方仓库地址:neo4j/neo4j: Graphs for ...

  5. debian/ubuntu 上安装和使用 Emacs

    直接进行安装: sudo apt update sudo apt install emacs 在debian 9上安装的版本是emacs24,在ubuntu 18.04上安装的版本是emacs25,目 ...

  6. debian,ubuntu下安装MariaDB,并设置密码,修改端口,允许外网访问

    文章目录 安装MariaDB 设置密码 修改端口 允许远程访问 安装MariaDB MariaDB存在apt 的更新中,如果追求最新版,可以下载二进制文件进行编译安装,但普通人用没必要那么麻烦,直接装 ...

  7. 在Debian/Ubuntu上面安装升级nginx到最新版

    在Debian下面通过 apt-get 可以自动安装 nginx,不过版本一般比较老,如果想要使用nginx的最新特性就需要升级版本. 一般安装可以通过编绎源文件安装,但可能需要安装很多编绎工具,并且 ...

  8. Debian/Ubuntu下安装Apache的Mod_Rewrite模块的步骤分享

    启用 Mod_rewrite 模块: sudo a2enmod rewrite 另外,也可以通过将 /etc/apache2/mods-available/rewrite.load 连接到 /etc/ ...

  9. centos/Debian/Ubuntu上安装PyCryptodome/Crypto

    注意:PyCryptodome是Crypto的升级版,不要安装旧的Crypto了. 如果能联网,直接装: pip3 install PyCryptodome GitHub仓库地址:Legrandin/ ...

  10. debian/ubuntu下安装java8

    2019独角兽企业重金招聘Python工程师标准>>> 通过oracle-java8-installer 安装的 方法: http://blog.csdn.net/feelang/a ...

最新文章

  1. 微信小程序下拉刷新真机无法弹回
  2. C# .NET 根据Url链接保存Image图片到本地磁盘
  3. 入选2021全球青年领袖榜单,蚂蚁何征宇的技术人生
  4. idea 代码第一次上传git_如何使用IDEA将项目代码首次上传至GitHub,并持续推送?...
  5. 04737 c++程序设计 第二章 课后程序设计题 第一题
  6. 关于coredump文件生成与查看
  7. 用计算机画出方格表,方格造型图_怎么做这种颜色相间的方格图(有图)_彩妆阁...
  8. HDU.1010 Tempter of the Bone
  9. centos6.5 升级python2.6到python2.7
  10. MAC电脑Command键怎么调换为Control键
  11. 返回空的list集合*彻底删除删除集合*只是清空集合
  12. 约瑟夫环c语言程序完整版,约瑟夫环的C语言实现
  13. Win10PE纯净版制作过程
  14. 《穿越计算机的迷雾》读书笔记
  15. 收藏!常用的档案馆(室)检索工具及编制方法
  16. layui框架轮播图实现轮播图片自适应视口缩放
  17. 错误代码: SEC_ERROR_REUSED_ISSUER_AND_SERIAL(解决办法)
  18. visio移动变得很卡的解决办法
  19. 社区发现不得不了解的库,包含Louvain 算法、Girvan-Newman 算法等多种社区发现算法,还具有可视化功能
  20. 【汇编与接口】ADA转换器

热门文章

  1. ICLR 2020 | ELECTRA:新型文本预训练模型
  2. 苹果手机做文件服务器,iOS企业账号打包发布App到自己服务器上
  3. 数据处理压力中的自我拯救
  4. Linux7-常用文件管理命令及系统变量基础
  5. 南方科技大学唐圆圆组招聘环境相关领域科研人才(年薪33~50万)
  6. 50个ggplot2可视化案例
  7. 宏基因组实战4. 基因注释Prokka
  8. 2019微生物组—宏基因组分析专题培训开课啦!
  9. pandas使用tabulate函数将pandas dataframe以类似于plsql表格的方式打印出来(printing dataframe in tabular format)
  10. python使用matplotlib可视化线图(line plot)、自定义可视化图像的四个边框的色彩、可以分别设置矩形每一条边的色彩(change the axis color)