真香!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ī)模高性能的需求。
項(xiàng)目地址:https://github.com/facebook/folly
邏輯設(shè)計
Folly 是一組相對獨(dú)立的組件,有的簡單到幾個符號。對內(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) 上運(yùn)行。你可以使用以下命令下載安裝:
- 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 根目錄或存檔解包根目錄)中,運(yùn)行:
- 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++程序員成長也有很大幫助,希望這個項(xiàng)目你會喜歡。
















 
 
 








 
 
 
 