真香!Facebook官方的開源 C++11 組件庫
今天,猿妹要和大家推薦一個Facebook開源的C++11 組件庫——Folly,F(xiàn)olly包含F(xiàn)acebook 廣泛使用的各種核心庫組件。
Folly是Facebook open source library的縮寫,提供了類似 Boost 和 std 庫的功能。包括散列、字符串、向量、內(nèi)存分配、位處理等,滿足大規(guī)模高性能的需求。
項目地址:https://github.com/facebook/folly
邏輯設(shè)計
Folly 是一組相對獨立的組件,有的簡單到幾個符號。對內(nèi)部依賴沒有限制,這意味著給定的 folly 模塊可以使用任何其他 folly 組件。
所有符號都在頂級命名空間中定義folly,當(dāng)然宏除外。宏名稱為 ALL_UPPERCASE 并且應(yīng)以FOLLY_. 命名空間folly定義了其他內(nèi)部命名空間,例如internal或detail。用戶代碼不應(yīng)依賴于這些命名空間中的符號。
Folly 也有一個experimental目錄。這一名稱主要意味著我們認(rèn)為 API 可能會隨著時間的推移發(fā)生重大變化。通常,此代碼仍在大量使用并且經(jīng)過良好測試。
Folly安裝下載
folly 支持 gcc (5.1+)、clang 或 MSVC。它支持在 Linux(x86-32、x86-64 和 ARM)、iOS、macOS 和 Windows (x86-64) 上運行。你可以使用以下命令下載安裝:
- wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz && \
- tar zxf release-1.8.0.tar.gz && \
- rm -f release-1.8.0.tar.gz && \
- cd googletest-release-1.8.0 && \
- cmake . && \
- make && \
- make install
構(gòu)建測試
默認(rèn)情況下,構(gòu)建測試作為CMake all目標(biāo)的一部分是禁用的。要構(gòu)建測試,請在配置時將-DBUILD_TESTS=ON指定為CMake。
Ubuntu 16.04 LTS
需要以下軟件包(隨意剪切和粘貼下面的 apt-get 命令):
- sudo apt-get install \
- g++ \
- cmake \
- libboost-all-dev \
- libevent-dev \
- libdouble-conversion-dev \
- libgoogle-glog-dev \
- libgflags-dev \
- libiberty-dev \
- liblz4-dev \
- liblzma-dev \
- libsnappy-dev \
- make \
- zlib1g-dev \
- binutils-dev \
- libjemalloc-dev \
- libssl-dev \
- pkg-config \
- libunwind-dev
Folly 依賴需要從源代碼安裝的fmt。以下命令將下載、編譯和安裝 fmt。
- git clone https://github.com/fmtlib/fmt.git && cd fmt
- mkdir _build && cd _build
- cmake ..
- make -j$(nproc)
- sudo make install
如果需要高級調(diào)試功能,請使用:
- sudo apt-get install \
- libunwind8-dev \
- libelf-dev \
- libdwarf-dev
在 folly 目錄(例如 checkout 根目錄或存檔解包根目錄)中,運行:
- mkdir _build && cd _build
- cmake ..
- make -j $(nproc)
- make install # with either sudo or DESTDIR as necessary
目前,F(xiàn)olly已經(jīng)在Github上標(biāo)星17.6K,累計分支4K(Github地址:https://github.com/facebook/folly)閱讀Folly的代碼對C++程序員成長也有很大幫助,希望這個項目你會喜歡。