Blog Detail

  • 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

    #include

    #include

    int main() {

    auto const xs = std::vector({ 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