13-5 使用 Conan 管理依赖

1. Conan 的安装        

        类似于 Java 使用 maven 管理依赖,C/C++ 可使用 Conan 进行依赖的管理。

        安装 Conan 非常简单,在安装完成 python 的前提下,使用 pip install conan 即可进行 Conan 的安装。安装完成后,在控制台下输出 conan 可以查看相应的命令使用方法:

2.  利用Conan 引入 libcurl 

        1)首先需要安装相关依赖,以 libcurl 为例。在主工程目录下,新建 conanfile.txt,内容为:

[requires]
libcurl/7.70.0

[generators]
cmake

        2)在 pycharm 的控制台中,使用 conan install 命令进行 conanfile.txt 相关内容的安装。由于 conan install 语句执行的位置在目录 Chapter13/cmake-build-debug 下,而 conanfile.txt 在目录 Chapter13 下,故 conan install 命令应该写为 conan install ..(.. 表示 conanfile.txt 路径在conan install 执行命令的上一级目录)

        安装完成后,再次执行 conan install ..,其结果会如上图所示,代表已经安装成功,即 libcurl 依赖成功安装。 

        3)上述操作完成了 libcurl 依赖的安装,但若要真正引入 libcurl,还需要修改主工程目录下的 CMakeLists.txt 文件。新增下述两行代码,引入 conan 的配置文件并安装

# 引入 libcurl 依赖,其中 ${CMAKE_BINARY_DIR} 表示的是 cmake-build-debug 目录
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)  # 引入配置文件
conan_basic_setup()  # 安装配置

        修改 target_link_libraries,设置 conan 引入的依赖生成的链接库,方便后续将其和执行程序放置一起。

target_link_libraries(${name}
            factorial       # 添加 factorial 静态链接库
            fibonacci       # 添加 fibonacci 动态链接库
            ${CONAN_LIBS})  # 添加 conan 引入的依赖的对应链接库

        此时,reload 主工程,可以发现 msvc 编译器无误,而 mingw 编译器报错,原因在于上述 conan 的操作均是在 msvc 编译器,不是在 mingw 编译器。

3. 使用 libcurl

        使用 libcurl 写一个小例子,将百度的网页进行下载并写入文件中。

#include <stdio.h>
#include <curl/curl.h>

// 下载一个网页,将其内容写到文件中
void TestCurl(){
  FILE *file = fopen("temp.json", "w");
  CURL *curl = curl_easy_init();  // 创建 curl 实例

  // 创建请求的网络头部
  struct curl_slist *headers = NULL;
  headers = curl_slist_append(headers, "User-Agent: Awesome-Octocat-App");

  // 进行网络请求
  curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);           // 请求网络头部
  curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");   // 请求的网址,注意是 http,https 需要证书
  curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);         // 设置网页写入文件的函数
  curl_easy_setopt(curl, CURLOPT_WRITEDATA, file);               // 将请求的网页写入文件

  // 查看网络请求结果
  CURLcode res = curl_easy_perform(curl);
  printf("res: %d\n", res);

  // 释放相应的指针,以及关闭文件
  curl_slist_free_all(headers);
  curl_easy_cleanup(curl);

  fclose(file);
}

        由于 CMakeLists.txt 中配置过 set(CMAKE_INSTALL_PREFIX install),所以生成的文件在 cmake-build-debug/bin 的目录下。最终程序执行结果无误,成功获取到百度网页的内容。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值