C/C++开发工具vcpkg、Broc、rhine、FunctionalPlus介绍

以下为你介绍的C/C++开发工具都可用在Linux系统上:vcpkg(VC++ 打包工具)、Broc(面向c/c++语言的构建工具)、rhine(LLVM类型化开发语言)、FunctionalPlus(C++ 编码库)。

1、vcpkg(VC++ 打包工具)

vcpkg 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 Windows 平台上获取 C 和 C++ 库,也支持 Linux、MacOS 平台。

vcpkg 自身也是使用 C++ 开发的 (而其他的 C++ 包管理大多并不是 C++ 开发的),并且 vcpkg 能够帮助用户在 Visual Studio 中,更好的使用这些安装好的库。

vcpkg 整合了 git,构建系统整合的 CMake,而绝大多数的 C++ 项目都可以直接或者间接的方式使用 CMake创建原生项目文件并构建。

vcpkg遵循一下原则:

开放源码、无需安装、支持重发构建、自定义生成、社区参与贡献、端口集成(与 BSD Ports 机制类似)。

先决条件:

Windows 10、8.1、7,Linux或MacOS。

Visual Studio 2015 Update 3或更高版本(在Windows上)。

Git。

可选:CMake 3.12.4。

安装和自举:

git clone https://github.com/Microsoft/vcpkg

cd vcpkg

powershell -exec bypass scripts\bootstrap.ps1

搜索库:

vcpkg search

安装库:

vcpkg install cpprestsdk

查看已安装的库:

vcpkg list

将库集成的 Visual Studio:

vcpkg integrate install

制表符完成/自动完成:

vcpkg支持在Powershell和bash中自动完成命令,程序包名称,选项等。要启用制表符补全,请使用以下之一:

PS> .\vcpkg integrate powershell

Linux:~/$ ./vcpkg integrate bash

并重新启动控制台。

下载地址:https://github.com/Microsoft/vcpkg

2、Broc(面向c/c++语言的构建工具)

broc是一款面向c/c++语言的构建工具,提供了编译、分支依赖、依赖模块下载等功能。不同于make, cmake等以库文件链接的编译方式,broc将依赖库源代码与程序源代码一并同时进行编译,这种方式可以避免程序源代码与依赖库编译选项或平台不一致导致的软件兼容性问题,broc支持编译结束后自动运行单元测试用例,借助Jenkins broc还能完成软件的持续集成。

优势:

源码编译:

broc支持将程序以及依赖库从源码状态进行编译,解决了c/c++程序因编译选项、操作系统平台或库文件版本不同而造成的兼容性问题;

代码自动下载:

broc支持自动checkout[依赖模块]源代码到本地然后进行编译,用户无需编写控制脚本来实现此功能;

分支依赖:

broc支持指定依赖库的主干、分支和TAG,broc能自动识别并解决库文件传递性依赖问题;

语法简单:

Makefile复杂的语法让人望而却步,而broc语法简洁,易上手;

增量编译靠谱:

make通过文件的修改时间来判断文件是否需要进行再编译,当文件版本回滚后或编译参数变更后,make不会对文件再次进行编译;broc除了使用文件的修改时间,还基于文件内容的哈希值以及编译参数作为增量编译的判断标准,增量编译的准确性会更高;

支持protobuf:

broc内置对protobuf的支持,将proto文件编译成静态库.a文件一步完成

安装配置:

系统要求:

操作系统Linux

工具要求:

Python:版本 >= 2.6.6,建议使用2.7版本

git:版本 >= 2.1.2

svn:版本 >= 1.7

gcc/g++:broc使用g++/gcc进行编译,需要事先安装好

protobuf:broc使用了protobuf,自带了protobuf的安装包

安装:

下载代码:

git clone https://github.com/baidu/broc.git baidu/broc

安装protobuf:

进入到tools目录执行sh install protobuf,protobuf被安装在$HOME/protobuf目录下

处理proto文件:

进入到tools目录下面执行sh install proto,生成broc自用的py文件

设置PATH:

将broc的client目录设置到PATH中, 例如:export PATH=$HOME/broc/client:$PATH

broc配置:

broc安装完后,执行broc命令可以生成broc的配置文件,配置文件位于用户的$HOME目录下:~/.broc.rc 配置文件内容:

[repo]

svn_repo_domain = https://github.com

git_repo_domain = https://github.com

svn_postfix_branch = BRANCH

svn_postfix_tag = PD_BL

svn_repo_domain     svn仓库域名

git_repo_domain     git仓库域名

svn_postfix_branch  svn url中branch名后缀

svn_postfix_tag     svn url中tag名后缀

参数svn_repo_domain和git_repo_domain分别表示SVN和GIT代码库的域名,配置成自己域名即可。一个依赖库出现不同版本时需要对版本进行对比,确定编译时要使用的依赖模块版本; SVN管理的依赖模块版本的对比是通过模块的svn url来完成的,因此broc要求svn url有统一的命名方法。

下载地址:https://github.com/baidu/broc

3、rhine(LLVM类型化开发语言)

C/C++开发工具vcpkg、Broc、rhine、FunctionalPlus介绍

rhine是一种LLVM类型化的Elixir开发语言。

rhine利用LLVM JIT的特性( N-d张量、一流的功能和参数类)设计出的一种快速语言。它把一个完全成熟的AST嵌入一个UseDef图。

语言特性:

def bar(arithFn ~Function(Int -> Int -> Int)) do

println $ arithFn 2 4enddef addCandidate(A ~Int, B ~Int) do

ret $ A + Benddef subCandidate(C ~Int, D ~Int) do

ret $ C - Denddef main() do

if false do

bar addCandidate  else

bar subCandidate  end

A = {{2}, {3}}

println A[1][0]end

下载地址:https://github.com/artagnon/rhine

4、FunctionalPlus(C++ 编码库)

C/C++开发工具vcpkg、Broc、rhine、FunctionalPlus介绍

FunctionalPlus 是一个小的表头库,它可以降低代码噪声,一次只处理一个单一等级的的抽象对象。通过增加你的代码的简洁性和可维护性来提高生产效率和编码乐趣。从长远的角度来看,它可以通过提供易于使用的功能将你从实现控制的流中解放出来。

示例代码:

#include "FunctionalPlus/FunctionalPlus.h"#include <iostream>

// std::list<std::uint64_t> CollatzSeq(std::uint64_t x) { ... }int main()

{

using namespace FunctionalPlus;

using namespace std;

typedef list<uint64_t> Ints;    

// [1, 2, 3 ... 29]

auto numbers = GenerateIntegralRange<Ints>(1, 30);    

// A function that does [1, 2, 3, 4, 5] -> "[1 => 2 => 3 => 4 => 5]"

auto ShowInts = Bind1of2(ShowContWith<Ints>, " => ");    

// A composed function that calculates a Collatz sequence and shows it.

auto ShowCollatsSeq = Compose(CollatzSeq, ShowInts);    

// Apply it to all our numbers.

auto seqStrs = Transform(ShowCollatsSeq, numbers);    

// Combine the numbers and their sequence representations into a map.

auto collatzDict = CreateMap(numbers, seqStrs);    

// Print some of the sequences.

cout << collatzDict[13] << endl;

cout << collatzDict[17] << endl;

}

下载地址:https://github.com/Dobiasd/FunctionalPlus

注明

以上就是C/C++开发工具vcpkg、Broc、rhine、FunctionalPlus的介绍内容,这些C/C++开发工具都能使用在Linux操作系统中。

栏目相关文章