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

2023-11-14

环境

  • clion
  • msvc 15(2017)
  • cmake

配置cmake

这里不多赘述

编译aws-cpp-sdk

1.使用git bash下载aws-cpp-sdk项目到指定目录

注意命令里一定要加–recurse-submodules参数,否则编译的时候会提示项目找不到子项目

git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp

2. 使用clion打开项目

3. 设置cmake编译选项

在这里插入图片描述
先设置build directory为build,然后设置cmake options

-DBUILD_ONLY="s3;..."
-DCMAKE_INSTALL_PREFIX="D:\ProgramData\aws-sdk-cpp\build\install"
  • BUILD_ONLY:设置要编译的模块,多个模块之间用";"分隔
  • CMAKE_INSTALL_PREFIX:cmake的下载路径,完成安装之后使用find_package才能找到。

4. BUILD&&INSTALL 项目

对应 cmake --build && cmake --install

选择Build>Install完成项目的构建和安装,这个选项实际是将build和install合并成一步。
注意:一定要使用Install选项,才会在CMAKE_INSTALL_PREFIX指定的目录输出动态链接库,lib文件,include头文件等内容,才能在之后的cmake项目中使用find_package找到包。
在这里插入图片描述

在cmake项目中使用aws-cpp-sdk

配置CMakeLists.txt


#设置AWSSDK_DIR,然后find_package
#$ENV{AWSSDK_HOME}表示取环境变量中的AWSSDK_HOME
#实际就是"<项目所在路径>\aws-sdk-cpp\build"目录,
#“build”对应之前的之前设置的build directory
set(AWSSDK_DIR $ENV{AWSSDK_HOME})
# aws-cpp-sdk的组件很多
# COMPONENTS后面可以指定想要使用的组件
find_package(AWSSDK REQUIRED COMPONENTS s3)

# 使用msvc需要添加下面两个编译选项
if (MSVC)
    add_definitions(-DUSE_IMPORT_EXPORT)
    add_definitions(-DUSE_WINDOWS_DLL_SEMANTICS)
endif ()

add_executable(test_program main.cpp)
target_link_libraries(test_program ${AWSSDK_LINK_LIBRARIES})

编译和项目构建中坑

fatal error C1083: Cannot open include file: ‘unistd.h’

【解决方案】

建议使用git clone下载项目,一定要添加–recurse-submodules选项

git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp

find_package(AWSSDK REQUIRED)找不到

【错误描述】

CMake Error at CMakeLists.txt:12 (find_package):
  By not providing "FindAWSSDK.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "AWSSDK", but
  CMake did not find one.

  Could not find a package configuration file provided by "AWSSDK" with any
  of the following names:

    AWSSDKConfig.cmake
    awssdk-config.cmake

  Add the installation prefix of "AWSSDK" to CMAKE_PREFIX_PATH or set
  "AWSSDK_DIR" to a directory containing one of the above files.  If "AWSSDK"
  provides a separate development package or SDK, be sure it has been
  installed.

【解决方案】

确认一下

  • 有没有设置CMAKE_INSTALL_PREFIX
  • 有没有install项目(对应cmake --install,linux下应该是make&&make install??)
  • 项目的CMakeList.txt的AWSSDK_DIR有没有设置对,应该设置为cmake --build生成的目录。

error LNK2001: unresolved external symbol “char const * const Aws::Http::CONTENT_TYPE_HEADER”

【错误描述】

error LNK2001: unresolved external symbol "char const * const Aws::Http::CONTENT_TYPE_HEADER" (?CONTENT_TYPE_HEADER@Http@Aws@@3QBDB) Aws::Http::API_VERSION_HEADER" (?API_VERSION_HEADER@Http@Aws@@3QBDB)

【解决方法】

msvc下需要添加下面两个编译选项,官方文档下的Build Defines有提到。

if (MSVC)
    add_definitions(-DUSE_IMPORT_EXPORT)
    add_definitions(-DUSE_WINDOWS_DLL_SEMANTICS)
endif ()

使用中的坑

cJson冲突

aws-cpp-sdk-core中自带cJson文件,会和外部引入的cJson项目发生冲突。
解决方案可能就直接使用aws-cpp-sdk-core里面的cJson吧,如果有其他好办法可以在下面留言

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用cmake配置aws-cpp-sdk以及在cmake项目中使用 的相关文章

随机推荐

  • python 如何解决 No module named ‘pip‘问题

    在下载python第三方库的时候 突然报错 解决方法很简单 两行代码就行了 python m ensurepip easy install pip 此时下载 还不行 提示说要更新pip python m pip install upgrad
  • python 21点

    21点 你可以叫我仁哥 也可以叫我情哥 mua 没请教 21点黑杰克 代码部分 相关说明 我做的是一个简化了的21点没有分牌操作 21点黑杰克 废话不多说先上代码 代码部分 import random import time 延时的这里可以
  • MySql中的先聚合再筛选与先筛选再聚合

    MySql中的先聚合再筛选与先筛选再聚合 where字句在聚合前先筛选记录 也就是说作用在group by和having字句前 而 having子句在聚合后对组记录进行筛选 事例 一 显示每个地区的总人口数和总面积 SELECT area
  • mysql主从同步

    set global server id 2 show slave status 查看binlog日志信息 stop slave change replication filter replicate do db bypass change
  • Qt 控件设置透明和半透明方法汇总

    遇到了好多次控件有需要设置为透明和半透明的情况 每次都是去网上搜一搜 看看别人怎么实现的 浪费了很多时间 故在这里进行一个总结 希望对自己有一个提升 本文对透明的各种情况进行了分类 整个窗口及窗口下的控件都是半透明的状态 分类一 只有窗口是
  • LeetCode_BinaryTree_337. House Robber III 打家劫舍 III【动态规划】【Java】【中等】

    目录 一 题目描述 英文描述 中文描述 示例与说明 二 解题思路 三 AC代码 Java 四 解题过程 第一搏 第二搏 一 题目描述 英文描述 The thief has found himself a new place for his
  • JAVA环境配置及如何解决win10重启后环境配置失效的问题

    一 配置JAVA环境 1 JDK的下载与安装 进入官网下载对应版本 注意 安装路径最好不要包含中文或空格等特殊字符 最好使用纯英文目录 2 配置环境变量的步骤 1 按下win E键 找到此电脑 右键选择属性 点击高级系统设置 在高级中点击右
  • 完美解决python pip安装超时问题

    书接上文 安装python过程中 国外镜像太慢了 使用国内源 1 设置超时时间 pip default timeout 100 install Pillow 2 不使用缓存 pip no cache dir install Pillow 2
  • (pytorch进阶之路)DDPM扩散概率模型

    文章目录 概述 前置知识 diffusion图示 扩散过程 逆扩散过程 后验的扩散条件概率 似然函数 算法 代码实现 概述 扩散概率模型 deep unsupervised learning using nonequilibrium the
  • 快到慢的跨时钟域处理

    如果你写过异步FIFO 格雷码的传输就已经包括慢时钟域到快时钟域以及快时钟域到慢时钟域的处理方法了 自己之前的异步FIFO由于理解没到位 快时钟域到慢时钟域的处理也是打拍 原因是快时钟域的时钟频率不够快 所以debug没问题 步入正题 快到
  • echarts中的data是对象无法使用

    问题描述 前端通常从后端拿到的数据都是数组中有多个对象 而echarts中的data必须是一个数组 形如 Mon Tue Wed Thu Fri Sat Sun 所以需要对后端返回的数据进行处理之后才可以使用 处理办法 this recor
  • UE4、5不让贴花影响Mesh

    如果不想让贴花影响某些在移动中的物体穿过它也会受到影响 例如人 车之类的 可以把mesh里的Receives Decals选项去掉
  • 剑指Offer第十九题:顺时针打印矩阵

    题目描述 输入一个矩阵 按照从外向里以顺时针的顺序依次打印出每一个数字 例如 如果输入如下4 X 4矩阵 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1 2 3 4 8 12 16 15 1
  • 微信JSSDK动态引入

    由于项目中使用到了微信和企业微信的js方法 所以引入了微信jsSDK1 2 0版本的文件 但是后期需要使用微信开放标签 所以微信端的js文件版本需要升级到1 6 0 但是企业微信目前最高支持1 2 0版本 所以添加了如下方法 在vue项目的
  • JS继承

    最近在面试中被问到js的继承 当时回答的不太好 所以今天特别总结一下 我们先来看一个基于原型链的继承例子 父类 function Person 子类 function Student 继承 Student prototype new Per
  • Github上关于iOS的各种开源项目集合(强烈建议大家收藏,查看,总有一款你需要)

    转载地址 http blog csdn net hbblzjy article details 52083919 下拉刷新 EGOTableViewPullRefresh 最早的下拉刷新控件 SVPullToRefresh 下拉刷新控件 M
  • 分数混合运算简便方法_《分数乘法》中的简便运算指导

    六年级上册 分数乘法 是在学生学习了运用乘法运算定律和整数 小数乘法简便计算以及分数加 减 乘法计算的基础上进行教学的 这一节课学生进一步理解整数乘法的运算定律不仅适用于小数 整数乘法 而且也适用于分数乘法 使计算更简便 是让学生在经历探索
  • java.lang.NoClassDefFoundError: org/springframework/context/event/EventListenerFactory

    集成rabbitmq的时候报错 只要看到NoClassDefFoundError基本都是jira包冲突了 1 首先找到相关类 spring tx有2个版本 2 利用IDEAL插件mavenhelper看一下 把高版本排除掉就可以了 java
  • 统计学习系列之参数估计

    参数估计 1 什么是参数估计 简单来说是 参数估计是指使用样本统计量估计总体的参数的 百度百科的解释如下 参数估计 parameter estimation 统计推断的一种 根据从总体中抽取的随机样本来估计总体分布中未知参数的过程 从估计形
  • 使用cmake配置aws-cpp-sdk以及在cmake项目中使用

    目录 环境 配置cmake 编译aws cpp sdk 1 使用git bash下载aws cpp sdk项目到指定目录 2 使用clion打开项目 3 设置cmake编译选项 4 BUILD INSTALL 项目 在cmake项目中使用a