リリース | 分。 C++標準 | 状態 | 注意事項 |
---|---|---|---|
マスター | cpp17 | ||
1.11.x | cpp17 | ||
1.10.x | cpp17 | ||
1.9.x | cpp11 | 2025 年 1 月 1 日までサポート | |
<= 1.8.x | cpp11 |
C++ Requests は、優れた Python Requests プロジェクトからインスピレーションを得た、libcurl のシンプルなラッパーです。
その名前にもかかわらず、libcurl のインターフェイスは簡単ではありません。間違いや誤用は、エラーとフラストレーションの一般的な原因です。このライブラリは、 C++17
(cpr < 1.10.0 を使用する場合はC++11
) のより表現力豊かな言語機能を使用して、ネットワーク呼び出しの本質をいくつかの簡潔なイディオムにまとめています。
簡単な GET リクエストを次に示します。
# include < cpr/cpr.h >
int main ( int argc, char ** argv) {
cpr::Response r = cpr::Get (cpr::Url{ " https://api.github.com/repos/whoshuu/cpr/contributors " },
cpr::Authentication{ " user " , " pass " , cpr::AuthMode::BASIC},
cpr::Parameters{{ " anon " , " true " }, { " key " , " value " }});
r. status_code ; // 200
r. header [ " content-type " ]; // application/json; charset=utf-8
r. text ; // JSON text string
return 0 ;
}
そして、ここでは心肺蘇生を行わない、機能性が低く、より複雑なコードを示します。
最新のドキュメントはここで見つけることができます。これは進行中の作業ですが、現在のテストよりもライブラリの使用方法をよりよく理解できるはずです。
C++ リクエストは現在以下をサポートしています。
計画されている機能の概要については、次のマイルストーンをご覧ください。
C++ リクエストを統合する必要がある CMake プロジェクトがすでにある場合、主な方法はfetch_content
使用することです。以下をCMakeLists.txt
に追加します。
include (FetchContent)
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git
GIT_TAG dec9422db3af470641f8b0d90e4b451c4daebf64) # Replace with your desired git commit from: https://github.com/libcpr/cpr/releases
FetchContent_MakeAvailable(cpr)
これにより、一般的な方法でリンクできるターゲットcpr::cpr
が生成されます。
target_link_libraries (your_target_name PRIVATE cpr::cpr)
それでいいはずです! libcurl
自分で処理する必要はありません。すべての依存関係は自動的に処理されます。これらすべては、ここにある例で見つけることができます。
fetch_content
使用したくない場合は、ライブラリをダウンロード、ビルド、インストールしてから、CMake find_package()
関数を使用してプロジェクトに統合できます。
注:この機能は、CPR_USE_SYSTEM_CURL が設定されている場合にのみ実行可能です。 (#645を参照)
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_USE_SYSTEM_CURL=ON
cmake --build . --parallel
sudo cmake --install .
cpr の静的バージョンと共有バージョンを切り替える場合は、代わりに「-DBUILD_SHARED_LIBS=ON/OFF」を使用します。
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_USE_SYSTEM_CURL=ON -DBUILD_SHARED_LIBS=OFF
cmake --build . --parallel
sudo cmake --install .
CMakeLists.txt
内:
find_package (cpr REQUIRED)
add_executable (your_target_name your_target_name.cpp)
target_link_libraries (your_target_name PRIVATE cpr::cpr)
cpr
次のコマンドで実行できる一連のテストを提供します。
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_BUILD_TESTS=ON # There are other test related options like 'CPR_BUILD_TESTS_SSL' and 'CPR_BUILD_TESTS_PROXY'
cmake --build . --parallel
ctest -VV # -VV is optional since it enables verbose output
hedronvision/bazel-make-cc-https-easy を参照してください。
あるいは、Linux ディストリビューションに固有のパッケージをインストールすることもできます。現在、cpr 用のパッケージを備えているディストリビューションはほとんどないため、ほとんどのユーザーはこのアプローチではプログラムを実行できません。
現在、次のディストリビューション用のパッケージを認識しています。
ディストリビューション用のパッケージがない場合は、パッケージを作成してみてください。そうすることで、それがディストリビューションのリポジトリに追加された場合は、プル リクエストを送信して、それを上記のリストに追加してください。ただし、これはパッケージを積極的に保守する予定がある場合にのみ行ってください。
Windows の場合は、libcpr NuGet パッケージも利用できます。現在、x86 および x64 ビルドはリリースおよびデバッグ構成でサポートされています。
パッケージはここにあります: NuGet.org
macOS では、MacPorts.org (arm64、x86_64、powerpc) 経由で cpr をインストールできます。
FreeBSD では、 pkg install cpr
発行するか、ポート ツリーを使用してインストールできます。
唯一の明示的な要件は次のとおりです。
C++17
互換コンパイラ。 GCC の最小必要バージョンは不明です。そのため、特定のバージョンの GCC でこのライブラリを構築するのに問題がある場合は、お知らせください。C++11
互換コンパイラしか使用できない場合は、cpr 1.9.x より前のすべてのバージョンが適しています。 cpr の 1.10.0 リリースでは、要件としてC++17
に切り替わります。OpenSSL
とその開発ライブラリが必要です。>= 7.64.0
を使用してください。それ以前のバージョンはサポートされていません。これは、Debian >= 10
または Ubuntu >= 20.04 LTS
が必要であることを意味します。 vcpkg 依存関係マネージャーを使用して、cpr をダウンロードしてインストールできます。
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
vcpkg のcpr
ポートは、Microsoft チーム メンバーおよびコミュニティ貢献者によって最新の状態に保たれます。バージョンが古い場合は、vcpkg リポジトリで問題を作成するか、プル リクエストを作成してください。
cpr
、Conan パッケージ マネージャーを使用してダウンロードしてインストールできます。 CMakeLists.txt をセットアップします (MSBuild、Meson などの使用方法については、Conan のドキュメントを参照してください)。例はここにあります。
コナンのcpr
パッケージは、コナンの貢献者によって最新の状態に保たれています。バージョンが古い場合は、 conan-center-index
リポジトリでイシューまたはプル リクエストを作成してください。