buckaroo 试用

我系统是mac 所以选择的是mac 的版本,官方是支持跨平台的。

安装

mac 版本安装

wget https://github.com/LoopPerfect/buckaroo/releases/download/v2.0.0/buckaroo-macos -O buckaroo
chmod +x ./buckaroo

取消信息收集(可选)

因为默认buckaroo 包含了遥测功能,在第一次运行的时候会有一个uuid生成,以此进行用户信息的统计,
我们可以通过环境变量禁用

export BUCKAROO_TELEMETRY_OPT_OUT=1

安装buck

因为buckaroo 使用了buck 做为包格式以及进行系统构建

brew tap facebook/fb
brew install buck

或者

wget https://github.com/njlr/buck-warp/releases/download/v0.3.0/buck-2019.01.10.01-osx -O buck
chmod +x ./buck
./buck

快速使用

这个来自官方的wiki,前提条件是参考上边的安装了buckaroo 以及buck

运行buckaroo quickstart 生成参考demo

buckaroo quickstart
按照提示输入名称

如下:

buckaroo quickstart
Please enter a project name (alphanumeric + underscores + dashes): 
demoapp
Writing project files... 
info Resolve start: 2019-02-02T12:04:10
info Resolving dependencies using quick strategy... 
info Resolve end: 2019-02-02T12:04:10
info Resolve time: 00:00:00.2814250
Success! 
info Installing packages...
success The packages folder is now up-to-date. 
To start your app: 
$ buck run :app

运行

buck run :app

效果

buck run :app
Starting new Buck daemon...
Using additional configuration options from .buckconfig.d/.buckconfig.buckaroo
Parsing buck files: finished in 1.8 sec
Building: finished in 1.9 sec (100%) 6/6 jobs, 6 updated
  Total time: 4.0 sec
Hello, world. 

添加依赖

buckaroo add github.com/buckaroo-pm/ericniebler-range-v3@branch=master

效果

buckaroo add github.com/buckaroo-pm/ericniebler-range-v3@branch=master
Adding github.com/buckaroo-pm/ericniebler-range-v3@branch=master
[solver] Resolved 0/1
[git] Fetching refs from https://github.com/buckaroo-pm/ericniebler-range-v3.git
[git] success fetched 49 refs in 3.556
[solver] Exploring github.com/buckaroo-pm/ericniebler-range-v3...
[solver] Fetching manifest...
[solver] success Manifest fetched in 1.308s
[solver] success Resolved github.com/buckaroo-pm/ericniebler-range-v3 -> {revision=bdbbf09fe99527553b511b07a21ccc4fdc90ce1d, branch=master}
info Installing packages...
info No receipt found for buckaroo/github/buckaroo-pm/ericniebler-range-v3; it will be installed. 
info Installing buckaroo/github/buckaroo-pm/ericniebler-range-v3... 
[git] Shallow cloning https://github.com/buckaroo-pm/ericniebler-range-v3.git



info Writing an installation receipt for buckaroo/github/buckaroo-pm/ericniebler-range-v3... 
success Installed buckaroo/github/buckaroo-pm/ericniebler-range-v3
success The packages folder is now up-to-date. 
Success. 

使用依赖 main.cpp

#include <iostream>
#include <vector>
#include <range/v3/all.hpp>

int main() {
  auto const xs = std::vector<int>({ 1, 2, 3, 4, 5 });
  auto const ys = xs
    | ranges::view::transform([](auto x) { return x * x; })
    | ranges::to_vector;

  for (auto const& i : ys) {
    std::cout << i << std::endl;
  }

  return 0;
}

重新运行

buck run :app

效果

buck run :app
Using additional configuration options from .buckconfig.d/.buckconfig.buckaroo
Invalidating internal cached state: Buck configuration options changed between invocations. This may cause slower builds.
Parsing buck files: finished in 1.1 sec
Building: finished in 3.1 sec (100%) 9/9 jobs, 2 updated
  Total time: 4.5 sec
1
4
9
16
25

说明

因为使用的是c++ 14 的编译器,如果不是c++ 14 的,需要修改配置.buckconfig 添加 如下

[cxx]
  cxxflags = -std=c++14

说明

类似的包管理工具有conan,也是不错的选择

参考资料

https://github.com/LoopPerfect/buckaroo
https://buckbuild.com/setup/getting_started.html
https://github.com/LoopPerfect/buckaroo/wiki/installation

原文地址:https://www.cnblogs.com/rongfengliang/p/10348193.html