folly
Folly(Facebookオープンソースライブラリにちなんで大まかに頭字語)は 実用性と効率性を備えたC++14コンポーネントのライブラリ 念頭に置いて。Follyには、広く使用されているさまざまなコアライブラリコンポーネントが含まれています フェイスブックで。特に、それはしばしばFacebookの他の依存関係です オープンソースのC ++の取り組みと、それらのプロジェクトがコードを共有できる場所。
それは(競争するのではなく)製品を補完します ブーストなど、そしてもちろん。実際、私たちは私たちの定義に着手します 必要なものが利用できない場合にのみコンポーネントを所有する、または 必要なパフォーマンス プロファイルを満たしていません。私たちは削除するよう努めます 愚かさからのもの もし、いつまたはブーストはそれらを時代遅れにします。
std
std
パフォーマンスの懸念はFollyの多くに浸透しており、時には 他の方法よりも特異なデザイン( 例えば、)。全体的に良好なパフォーマンス スケールはFolly全体で統一されたテーマです。
PackedSyncPtr.h
SmallLocks.h
Follyは比較的独立したコンポーネントのコレクションであり、一部は いくつかのシンボルとして単純です。内部に制限はありません 依存関係、つまり、特定のFollyモジュールが他のモジュールを使用できることを意味します 愚かなコンポーネント。
すべてのシンボルは、最上位の名前空間で定義されます。 コースマクロ。マクロ名はALL_UPPERCASEであり、接頭辞を付ける必要があります で。名前空間他の内部名前空間を定義する そのような。ユーザー コードはシンボルに依存しない それらの名前空間で。
folly
FOLLY_
folly
internal
detail
フォリーにもディレクトリがあります。この指定は、 主に、APIが時間の経過とともに大きく変化する可能性があると感じています。このコードは、 通常、まだ頻繁に使用されており、十分にテストされています。
experimental
トップレベルでは、Follyは古典的な「吃音」スキームを使用しますブーストなどで使用されます。最初のディレクトリは、 ライブラリのインストールルート(LAのバージョン管理が可能)、および2つ目は、ライブラリを次の場合に区別することです。 ファイルを含む、例えば
folly/folly
folly-1.0/
#include <folly/FBString.h>
ディレクトリ構造はフラットです(名前空間構造を模倣しています)、 つまり、精巧なディレクトリ階層がありません(可能です これは将来のバージョンで変更される予定です)。サブディレクトリには、愚行の内部およびおそらくFacebookで使用されるファイルが含まれていますが、 クライアントでの使用に十分安定しているとは見なされません。コードでは使用しないでください Follyを更新すると壊れる可能性があるファイル。
experimental
folly/experimental
サブディレクトリには、すべてのユニットテストが含まれています コンポーネント、通常はそれぞれに名前が付けられます。ディレクトリには以下が含まれます ドキュメンテーション。
folly/folly/test
ComponentXyzTest.cpp
ComponentXyz.*
folly/folly/docs
Follyのかなりフラットな構造のため、その中に何が入っているかを確認するための最良の方法
トップレベルのfolly /ディレクトリ
のヘッダーを見ることです。可能な操作
ドキュメントについては、docsフォルダー
で、概要から始めて確認してください。
Folly は GitHub で公開されていますhttps://github.com/facebook/folly
follyはコミットからABIの互換性保証を提供しないため コミットするには、一般的にFollyを静的ライブラリとして構築することをお勧めします。
Folly は GCC (5.1+)、clang、または MSVC をサポートしています。Linuxで実行する必要があります(x86-32、 x86-64、およびARM)、iOS、macOS、およびWindows(x86-64)。CMakeビルドは これらのプラットフォームのいくつかでテストされています。少なくとも、macOSをサポートし、 Linux (最新の Ubuntu LTS リリース以降)
getdeps.py
このスクリプトは、MetaのOSSツールの多くで使用されています。最初に必要なすべての依存関係をダウンロードしてビルドし、次にcmakeなどを呼び出して愚かさを構築します。これにより、システムにローカルにインストールされているバージョンを考慮して、すべての依存ライブラリの関連バージョンを使用してビルドできます。
それはPythonで書かれているので、あなたのPATHにはpython3.6以降が必要になります。Linux、macOS、Windowsで動作します。
folly の cmake ビルドの設定は getdeps マニフェストに保持されており、必要に応じてローカルで編集できます。
build/fbcode_builder/manifests/folly
LinuxまたはMacOS(自作がインストールされている)の場合は、システムの依存関係をインストールしてビルドを節約できます。
# Clone the repo git clone https://github.com/facebook/folly # Install dependencies cd folly sudo ./build/fbcode_builder/getdeps.py install-system-deps --recursive
インストールする前にパッケージを確認する場合:
./build/fbcode_builder/getdeps.py install-system-deps --dry-run --recursive
他のプラットフォームの場合、またはLinuxでシステムの依存関係がない場合ほとんどの場合、ビルドステップ中にそれらをダウンロードしてビルドします。
getdeps.py
依存関係の使用とインストールの一部は次のとおりです。
getdeps.py
このスクリプトは、最初に必要なすべての依存関係をダウンロードしてビルドします。 そして、Cmakeなどを呼び出して愚かさを構築します。これにより、システムにローカルにインストールされているバージョンを考慮して、すべての依存ライブラリの関連バージョンを使用してビルドできます。
getdeps.py現在、Python 3.6+があなたの道にある必要があります。
getdeps.pyCMakeなどを呼び出します
# Clone the repo git clone https://github.com/facebook/folly cd folly # Build, using system dependencies if available python3 ./build/fbcode_builder/getdeps.py --allow-system-packages build
出力をスクラッチ領域に置きます。
installed/folly/lib/libfolly.a:図書館
制御する引数を指定することもできます ビルドに使用されるスクラッチ ディレクトリの場所。デフォルトのスクラッチインストール場所は、ログまたは
--scratch-path
python3 ./build/fbcode_builder/getdeps.py show-inst-dir
もありますそしてもう少し提供する議論 インストールディレクトリのきめ細かな制御。しかし、それを考えると Follyは、一般的にコミット間の互換性の保証を提供しません ライブラリをビルドして一時的な場所にインストールすることを推奨し、 次に、プロジェクトのビルドをこの一時的な場所ではなく、 従来のシステムインストールディレクトリにFollyをインストールします。たとえば、CMakeでビルドしている場合は、変数を使用して、CMakeがこの一時インストールディレクトリで愚かさを見つけられるようにすることができます。 プロジェクトをビルドします。
--install-dir
--install-prefix
CMAKE_PREFIX_PATH
反復するために再び呼び出したい場合は、スクラッチビルドディレクトリに便利なスクリプト出力があります。スクラッチビルドディレクトリは、ログまたは
cmake
run_cmake.py
python3 ./build/fbcode_builder/getdeps.py show-build-dir
デフォルトでは、愚かさのテストを構築します。それらを実行するには:
getdeps.py
cd folly python3 ./build/fbcode_builder/getdeps.py --allow-system-packages test
build.sh/
build.bat上包み
build.shLinuxおよびMacOSで使用でき、Windowsで使用することができます 代わりにスクリプト。そのラッパー
build.bat
getdeps.py
getdeps に cmake を呼び出させたくない場合は、デフォルトでは、CMaketarget の一部としてテストのビルドが無効になっています。 テストをビルドするには、構成時に CMake を指定します。
all
-DBUILD_TESTS=ON
注意:ビルドを反復処理するために再度呼び出す場合は、スクラッチパスビルドディレクトリに役立つスクリプト出力があります。スクラッチビルドディレクトリは、ログまたは
cmake
getdeps.py
run_cmake.py
python3 ./build/fbcode_builder/getdeps.py show-build-dir
ctests でテストを実行すると、ビルドディレクトリに cd した場合にも機能します (例: (cd $(python3 ./build/fbcode_builder/getdeps.py show-build-dir) && ctest)'
boost、gtest、またはその他の依存関係がデフォルト以外にインストールされている場合 場所では、変数を使用して、CMAKEの外観もヘッダーファイルとライブラリを探すことができます 非標準的な場所。たとえば、ディレクトリも検索するには、ヘッダーファイルの場合と ディレクトリおよびライブラリの場合は、次のように呼び出すことができます。
CMAKE_INCLUDE_PATH
CMAKE_LIBRARY_PATH
/alt/include/path1
/alt/include/path2
/alt/lib/path1
/alt/lib/path2
cmake
cmake \ -DCMAKE_INCLUDE_PATH=/alt/include/path1:/alt/include/path2 \ -DCMAKE_LIBRARY_PATH=/alt/lib/path1:/alt/lib/path2 ...
上記のアプローチを使用してください。Ubuntu LTSのCIでテストし、場合によっては他のディストリビューションでテストします。
getdeps.py
システムパッケージのセットが選択したディストリビューションに適していない場合は、依存関係マニフェストでディストリビューションバージョン固有のオーバーライドを指定できます(例:https://github.com/facebook/folly/blob/main/build/fbcode_builder/manifests/boost)。おそらく、最新のUbuntu / DebianまたはFedora / Redhat派生ディストリビューションで動作させることができます。
執筆時点(2021年12月)では、lang_badge_testのGCC 11.xベースのシステムにビルドブレークがあります。バッジ機能が必要ない場合は、CMakeListsからコメントアウトすることで回避できます.txt(残念ながらfbthriftには必要です)
多くのテストは愚かなWindowsビルドに対して無効になっていることに注意してください、cmake構成ステップからログでそれらを確認するか、WINDOWS_DISABLED
CMakeLists.txt
そうは言っても、ビルドはWindowsで動作し、CIでテストされています。
getdeps.py
必要に応じて、Vcpkgを試すことができます。 follyはVcpkgで利用可能であり、リリースはを介してビルドできます。
vcpkg install folly:x64-windows
使用することもできますに対して構築します。
vcpkg install folly:x64-windows --head
main
getdeps.pyビルドはmacOSで動作し、CIでテストされますが、必要に応じて、macOSパッケージマネージャーの1つを試すことができます
follyはフォーミュラとして利用可能であり、リリースはを介して構築することができます。
brew install folly
あなたも使用することができます に対して構築するには:
folly/build/bootstrap-osx-homebrew.sh
main
./folly/build/bootstrap-osx-homebrew.sh
これにより、最上位にビルドディレクトリが作成されます。
_build
MacPorts から必要なパッケージをインストールします。
sudo port install \ boost \ cmake \ gflags \ git \ google-glog \ libevent \ libtool \ lz4 \ lzma \ openssl \ snappy \ xz \ zlib
ダブルコンバージョンをダウンロードしてインストールします。
git clone https://github.com/google/double-conversion.git cd double-conversion cmake -DBUILD_SHARED_LIBS=ON . make sudo make install
以下のパラメータを使用してfollyをダウンロードしてインストールします。
git clone https://github.com/facebook/folly.git cd folly mkdir _build cd _build cmake .. make sudo make install