国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux上使用vcpkg + CMake配置cpprest

這篇具有很好參考價值的文章主要介紹了Linux上使用vcpkg + CMake配置cpprest。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

vcpkg的使用在Linux平臺與Windows平臺沒什么差異,就不過多闡述。

有一點需要注意的是,Windows上安裝的包默認是x86,而Linux上默認是x64。

vcpkg安裝cpprest

cpprest庫依賴很多庫,比如boost,openssl等,但不用操心,vcpkg會幫我們自帶安裝。

./vcpkg install cpprestsdk

問題

需要注意的是,安裝過程很有可能會失敗,除網(wǎng)絡(luò)原因外,還有一個地方會出錯:

CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
    Command failed: /home/vcpkg/downloads/tools/cmake-3.25.1-linux/cmake-3.25.1-linux-x86_64/bin/cmake --build . --config Debug --target install -- -v -j3
    Working Directory: /home/vcpkg/buildtrees/openssl/x64-linux-dbg
    See logs for more information:
      /home/vcpkg/buildtrees/openssl/install-x64-linux-dbg-out.log

Call Stack (most recent call first):
  installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process)
  installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build)
  ports/openssl/unix/portfile.cmake:21 (vcpkg_cmake_install)
  ports/openssl/portfile.cmake:33 (include)
  scripts/ports.cmake:147 (include)


error: building openssl:x64-linux failed with: BUILD_FAILED
error: Please ensure you're using the latest port files with `git pull` and `vcpkg update`.
Then check for known issues at:
    https://github.com/microsoft/vcpkg/issues?q=is%3Aissue+is%3Aopen+in%3Atitle+openssl
You can submit a new issue at:
    https://github.com/microsoft/vcpkg/issues/new?template=report-package-build-failure.md&title=[openssl]+Build+error
Include '[openssl] Build error' in your bug report title, the following version information in your bug description, and attach any relevant failure logs from above.
    vcpkg-tool version: 2023-01-24-8a88d63f241d391772fbde69af9cab96c3c64c75
    vcpkg-scripts version: 91dd61bd4 2023-01-27 (2 days ago)

通過查看/home/vcpkg/buildtrees/openssl/install-x64-linux-dbg-out.log日志可以發(fā)現(xiàn)

[1/3] cd /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean && export PATH=/bin:/opt/rh/devtoolset-8/root/usr/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/bin:/home/Listening/vcpkg/downloads/tools/ninja/1.10.2-linux && export CC=/opt/rh/devtoolset-8/root/usr/bin/cc && export AR=/opt/rh/devtoolset-8/root/usr/bin/ar && export LD=/opt/rh/devtoolset-8/root/usr/bin/ld && export RANLIB=/opt/rh/devtoolset-8/root/usr/bin/ranlib && export MAKE=/bin/make && export MAKEDEPPROG=/opt/rh/devtoolset-8/root/usr/bin/cc && export WINDRES= && /bin/perl Configure no-shared no-module enable-static-engine no-zlib no-ssl2 no-idea no-cast no-seed no-md2 no-tests linux-x86_64 --prefix=/home/Listening/vcpkg/packages/openssl_x64-linux/debug --libdir=/home/Listening/vcpkg/packages/openssl_x64-linux/debug/lib --openssldir=/etc/ssl "-fPIC -g" && /home/Listening/vcpkg/downloads/tools/cmake-3.25.1-linux/cmake-3.25.1-linux-x86_64/bin/cmake -DDIR=/home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean -P /home/Listening/vcpkg/ports/openssl/unix/remove-deps.cmake
FAILED: nssl-3.0.7-96d825e305.clean/Makefile /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean/Makefile 
cd /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean && export PATH=/bin:/opt/rh/devtoolset-8/root/usr/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/bin:/home/Listening/vcpkg/downloads/tools/ninja/1.10.2-linux && export CC=/opt/rh/devtoolset-8/root/usr/bin/cc && export AR=/opt/rh/devtoolset-8/root/usr/bin/ar && export LD=/opt/rh/devtoolset-8/root/usr/bin/ld && export RANLIB=/opt/rh/devtoolset-8/root/usr/bin/ranlib && export MAKE=/bin/make && export MAKEDEPPROG=/opt/rh/devtoolset-8/root/usr/bin/cc && export WINDRES= && /bin/perl Configure no-shared no-module enable-static-engine no-zlib no-ssl2 no-idea no-cast no-seed no-md2 no-tests linux-x86_64 --prefix=/home/Listening/vcpkg/packages/openssl_x64-linux/debug --libdir=/home/Listening/vcpkg/packages/openssl_x64-linux/debug/lib --openssldir=/etc/ssl "-fPIC -g" && /home/Listening/vcpkg/downloads/tools/cmake-3.25.1-linux/cmake-3.25.1-linux-x86_64/bin/cmake -DDIR=/home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean -P /home/Listening/vcpkg/ports/openssl/unix/remove-deps.cmake
Can't locate IPC/Cmd.pm in @INC (@INC contains: /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean/util/perl /opt/rh/devtoolset-8/root//usr/lib64/perl5/vendor_perl /opt/rh/devtoolset-8/root/usr/lib/perl5 /opt/rh/devtoolset-8/root//usr/share/perl5/vendor_perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean/external/perl/Text-Template-1.56/lib) at /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean/util/perl/OpenSSL/config.pm line 19.
BEGIN failed--compilation aborted at /home/Listening/vcpkg/buildtrees/openssl/x64-linux-dbg/nssl-3.0.7-96d825e305.clean/util/perl/OpenSSL/config.pm line 19.
Compilation failed in require at Configure line 23.
BEGIN failed--compilation aborted at Configure line 23.
ninja: build stopped: subcommand failed.

里面有個關(guān)鍵詞Can't locate IPC/Cmd.pm說明在編譯OpenSSL時,需要的Perl模塊 IPC::Cmd 沒有安裝。

解決

Perl模塊 IPC::Cmd 沒有安裝,需要安裝CPAN模塊,再安裝IPC::Cmd

在Linux或Unix系統(tǒng)中,通常可以使用包管理器安裝CPAN模塊。比如,在Debian或Ubuntu上,使用以下命令安裝CPAN:

sudo apt-get install cpanminus

如果在其他系統(tǒng)上,查找與您的系統(tǒng)相對應(yīng)的包管理器命令。比如我這里是CentOS 7系統(tǒng):

sudo yum install perl-CPAN

安裝完后,使用以下命令安裝所需的模塊:

cpanm IPC::Cmd //Debian或Ubuntu

cpan IPC::Cmd // CentOS

CMake使用cpprest

CMake中使用vcpkg安裝的包,需要注意幾點:

  1. CMakeLists.txt文件中設(shè)置vcpkg的root目錄,且需要在project()語句之前
  2. cpprest配置文件路徑
cmake_minimum_required(VERSION 3.20)

# 設(shè)置VCPKG_ROOT所在的位置
set(VCPKG_ROOT "home/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE PATH "")
set(CMAKE_TOOLCHAIN_FILE ${VCPKG_ROOT})

project(demo)

set(CMAKE_CXX_STANDARD 14)
# 設(shè)置cppresst庫所在路徑
set(cpprest_DIR "/home/vcpkg/installed/x64-linux/share/cpprestsdk")
find_package(cpprestsdk CONFIG REQUIRED)

add_executable(demo main.cpp)

target_link_libraries(demo PRIVATE pthread cpprestsdk::cpprest)

通過CMake + vcpkg有個好處就是不用手寫cpprest所依賴的庫,不然target_link_libraries還得加上boost、openssl等。

接下來,就可以使用cpprest庫了:

//main.cpp
#include <iostream>
#include <string>
#include "cpprest/http_client.h"
#include "cpprest/uri_builder.h"
#include "cpprest/http_msg.h"
#include "pplx/pplxtasks.h"
#include "cpprest/json.h"
#include "cpprest/uri.h"


using namespace web;
using namespace web::http;
using namespace web::http::client;
using namespace web::json;

std::string send_request(const std::string &url, const std::string& arg) {
    web::http::client::http_client client(url);
    // Build request URI and start the request.
    uri_builder builder(arg);

    std::string re{};
    client.request(methods::GET, builder.to_string())
                    // continue when the response is available
            .then([](http_response response) -> pplx::task<web::json::value> {
                // if the status is OK extract the body of the response into a JSON value
                // works only when the content type is application\json
                if(response.status_code() == status_codes::OK) {
                    return response.extract_json();
                }

                // return an empty JSON value
                return pplx::task_from_result(web::json::value());
            })
                    // continue when the JSON value is available
            .then([&re](pplx::task<web::json::value> previousTask) {
                // get the JSON value from the task and display content from it
                try {
//                    web::json::value const& v = previousTask.get();
                    re = previousTask.get().serialize();
                } catch (http_exception const & e) {
                    printf("Error exception:%s\n", e.what());
                }
            })
            .wait();
    return re;
}

int main()
{
    std::string url{"http://10.2.3.4:2345"};
    std::string arg{"api/storage/service-alarm-info/"};
    auto result = send_request(url,arg);
    std::cout<<result<<"\n";

    while (1)
    {
        /* code */
    }
    
    return 0;
}

注意,由于是事后記錄當時為了使用vcpkg + cmake+ cpprest方案所踩的坑,故有不完整的地方或遺漏,還請諒解!文章來源地址http://www.zghlxwxcb.cn/news/detail-458760.html

到了這里,關(guān)于Linux上使用vcpkg + CMake配置cpprest的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Linux系統(tǒng)下安裝Vcpkg,并使用Vcpkg安裝、編譯OpenSceneGraph

    環(huán)境:CentOS7 內(nèi)存:8g(內(nèi)存過少編譯osg時會出現(xiàn)內(nèi)存不足導(dǎo)致編譯失敗的情況,內(nèi)存設(shè)置為4G時失敗了,我直接加到了8g,所以就以8g為準了) 安裝和配置vcpkg 升級git 安裝osg 安裝編譯osg時需要的依賴 安裝osg 測試是否安裝成功

    2024年01月19日
    瀏覽(20)
  • Qt利用VCPKG和CMake和OpenCV和Tesseract實現(xiàn)中英文OCR

    Qt利用VCPKG和CMake和OpenCV和Tesseract實現(xiàn)中英文OCR

    ??今天看 OpenCV 方面的教程,pdf 格式的,因為一些強迫癥的習慣,喜歡添加一些書簽,手動是不太愿意的,自然就想到利用OCR來實現(xiàn)。 ??想要自己編碼實現(xiàn)OCR,方案比較簡單就是 Tesseract 。單獨使用 Tesseract 也可以,但最好利用 OpenCV 來進行圖像方面的處理,一大堆方法可

    2024年02月05日
    瀏覽(91)
  • VS2022遠程Linux使用cmake開發(fā)c++工程配置方法

    VS2022遠程Linux使用cmake開發(fā)c++工程配置方法

    最近使用別人在VS2015上使用visualgdb搭建的linux開發(fā)環(huán)境,各種不順手,一會代碼不能調(diào)轉(zhuǎn)了,一會行號沒了,調(diào)試的時候斷不到正確的位置,取消的斷點仍然會進。因此重新摸索了一套使用vs的遠程開發(fā)方法。 使用的相關(guān)工具及技術(shù)涉及: Vs2022 Ninja g++ gcc mobaxterm等。 采用ss

    2024年02月12日
    瀏覽(24)
  • gRPC結(jié)合vcpkg在x64-windows平臺visual studio2019 cmake工程里面的應(yīng)用

    gRPC結(jié)合vcpkg在x64-windows平臺visual studio2019 cmake工程里面的應(yīng)用

    這里我們運用vcpkg去下載安裝gRPC,進入vcpkg目錄后,執(zhí)行命令:.vcpkg.exe install grpc:x64-windows grpc在vcpkg里面安裝完成后,我們就來使用grpc做一個簡單的例子。 gRPC顧名思義,就是google的RPC方案,基于protobuf數(shù)據(jù)傳輸,其中proto文件的定義約定了服務(wù)器端和客戶端的服務(wù)接口協(xié)議。

    2024年02月02日
    瀏覽(38)
  • 【配置環(huán)境】Windows下C/C++第三方庫管理工具vcpkg安裝和使用

    【配置環(huán)境】Windows下C/C++第三方庫管理工具vcpkg安裝和使用

    目錄 一,環(huán)境準備 二,vcpkg簡介 三,Window系統(tǒng)下載vcpkg 四,Linux系統(tǒng)下載vcpkg 五,vcpkg命令介紹 1.命令參照表 2.常用的vcpkg命令以及詳細解釋 Git - Downloads?根據(jù)平臺下載最新版本(傻瓜式安裝) Visual Studio?2015 或更新的版本( 包含英文語言包 ),點擊VS界面菜單欄的 工具-獲

    2024年02月16日
    瀏覽(57)
  • Windows10通過vcpkg快速配置PCL庫

    Windows10通過vcpkg快速配置PCL庫

    https://github.com/microsoft/vcpkg **注意:**最好在D盤下克隆源碼并安裝,這樣之后用vcpkg安裝的包路徑就會在D:/vcpkg/packages/中了 Error: in triplet x86-windows: Unable to find a valid Visual Studio instance The following VS instances were excluded because the English language pack is unavailable: D:Microsoft Visual Studio2019

    2024年02月04日
    瀏覽(13)
  • 使用cmake配置aws-cpp-sdk以及在cmake項目中使用

    使用cmake配置aws-cpp-sdk以及在cmake項目中使用

    clion msvc 15(2017) cmake 這里不多贅述 注意命令里一定要加–recurse-submodules參數(shù),否則編譯的時候會提示項目找不到子項目 先設(shè)置build directory為build,然后設(shè)置cmake options BUILD_ONLY:設(shè)置要編譯的模塊,多個模塊之間用\\\";\\\"分隔 CMAKE_INSTALL_PREFIX:cmake的下載路徑,完成安裝之后使用f

    2024年02月02日
    瀏覽(31)
  • Mac 下 CMake 的配置與使用

    Mac 下 CMake 的配置與使用

    進入 官網(wǎng)下載 dmg 文件: (在紅圈中根據(jù)自己的Mac版本任選一個 dmg 下載) 安裝完成后,從菜單欄選擇:Tools–How to Install For Command Line Use 在終端命令行中輸入彈出彈窗中第二項 to install symlinks to \\\'/usr/local/bin\\\', run: 的指令: 檢查是否配置成功: cmake --version 可以正常識別,配

    2023年04月08日
    瀏覽(18)
  • 使用CMake交叉編譯Arm Linux程序

    注意,工具鏈文件的指定一定要緊跟cmake命令之后,不能放到 … 后面構(gòu)建arm架構(gòu)cmake 工程里新建一個文件叫arm_linux_setup.cmake arm_linux_setup.cmake內(nèi)容如下

    2024年02月03日
    瀏覽(55)
  • Vcpkg 的安裝與使用

    Vcpkg 的安裝與使用

    歡迎大家來我的博客逛逛??:hauhau.cn 先確保你已經(jīng)安裝了: Windows7 及以上的版本 Git Visual Studio 2015 Update 3 及以上的版本 關(guān)于美化 Windows Terminal 及 Powershell,可以查看這篇優(yōu)秀文章: Windows-Terminal 美化以及通過 OhMyPosh 美化 PowerShell vcpkg 需要 Visual Studio 安裝了英文語言包,安裝步

    2024年02月05日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包