目录

  • 环境
  • 配置cmake
  • 编译aws-cpp-sdk
    • 1.使用git bash下载aws-cpp-sdk项目到指定目录
    • 2. 使用clion打开项目
    • 3. 设置cmake编译选项
    • 4. BUILD&&INSTALL 项目
  • 在cmake项目中使用aws-cpp-sdk
    • 配置CMakeLists.txt
  • 编译和项目构建中坑
    • fatal error C1083: Cannot open include file: 'unistd.h'
      • 【解决方案】
    • find_package(AWSSDK REQUIRED)找不到
      • 【错误描述】
      • 【解决方案】
    • error LNK2001: unresolved external symbol "char const * const Aws::Http::CONTENT_TYPE_HEADER"
      • 【错误描述】
      • 【解决方法】
  • 使用中的坑
    • cJson冲突
    • Support of UNICODE macro on Windows Visual Studio Projects
      • 【错误描述】
      • 【解决方案】

环境

  • 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 hasasked CMake to find a package configuration file provided by "AWSSDK", butCMake did not find one.Could not find a package configuration file provided by "AWSSDK" with anyof the following names:AWSSDKConfig.cmakeawssdk-config.cmakeAdd 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 beeninstalled.

【解决方案】

确认一下

  • 有没有设置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吧,如果有其他好办法可以在下面留言

使用cmake配置aws-cpp-sdk以及在cmake项目中使用相关推荐

  1. winpcapp配置c++网口通讯_MES、SCADA项目中的数据采集—基于C#与研华IO模块ModbusTCP通讯...

    写在面前 大家好,我是捞仪,号主小智前同事~ 前面我们介绍了PLC与PLC的通讯,PC与PLC之间的通讯(见文末推荐),就工业环境而言,通讯方式和通讯协议多种多样,通讯的硬件也是五花八门.但是通讯做多 ...

  2. 阿里云SDK和SpringBoot maven项目中jar包冲突的解决办法

    stringboot项目在引用阿里云短信sdk时,出现jar包冲突问题,项目可以正常启动,但是启动会报如图错误 解决办法,在maven中查找到冲突的jar,并用exclusions隔离冲突的jar & ...

  3. Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)

    关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...

  4. Android Studio使用cmake配置c++开发Admob

    使用c++开发Admob可以构建跨平台的广告集成体验,不用为不同平台编写原生语言的广告集成代码,也更加方便纯native开发的软件进行广告植入.通过官方教程和demo的研究, 踩了若干坑之后,终于在n ...

  5. Android NDK—CMake配置及使用

    文章目录 安装NDK和CMake 新建NDK项目 代码实现 编译构建 如何使用 自身项目使用 其他项目使用 安装NDK和CMake 打开AS的Prefrences->Android SDK-&g ...

  6. 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )

    文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  7. 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )

    文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...

  8. aws python库_适用于Alexa的新AWS Python SDK入门指南

    aws python库 by Ralu Bolovan 由Ralu Bolovan 适用于Alexa的新AWS Python SDK入门指南 (A Beginner's guide to the ne ...

  9. ubuntu vscode通过cmake配置c++和VS2019一样 进行调试

    之前的 linux下vscode配置c++,使其和Visual Studio2019一样调试文章和本篇类似,配置vscode使其和vs2019进行调试和编译,但是之前的文章不是很实用,是通过命令行的形 ...

最新文章

  1. android平台自动化编译环境搭建一hudson安装
  2. Confluence 6 重要缓存和监控
  3. STL之七:STL各种容器的使用时机详解
  4. 关于IB_DESIGNABLE / IBInspectable的那些事
  5. C/C++中Static和Const的作用
  6. Redis--事务理解
  7. 积跬步以至千里_“积跬步以至千里”——第三届世界老年旅游大会推进会昨日召开...
  8. GIS案例练习-----------第六天
  9. passwd命令限制用户密码到期时间
  10. ZStack实践汇 | 高效开发测试打造产品化私有云
  11. 2022(2021JCR)SCI期刊影响因子完整版
  12. 最新苹果CMSV10视频电影网站源码+自适应手机版
  13. 2021年最佳开源软件榜单出炉!
  14. Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符
  15. 玩赚亚丁号---薅羊毛专业版
  16. 百分点数据科学实验室:产品生命周期管理创新应用落地实践
  17. 近年来Person Re-identification论文汇总
  18. PHP 图片上传 图片压缩
  19. android多屏幕多分辨率的一些概念
  20. Android 详解第三方介质交互之NFC,并且实现读你的交通卡,酒店房卡,学生证!

热门文章

  1. 王兴:格局上输了,不管你多努力都不可能赢!
  2. 【python脚本系列】利用mido库解析midi文件
  3. 使用STLINK下载程序到STM8S103问题汇总
  4. 安卓程序 静默 截屏工具_安卓定制系统开放性对比测试:到底谁最自由?
  5. 亿级经纬度距离计算88.73秒,秒杀VBA!
  6. 判断是pc端还是手机端
  7. php 手机号机主姓名实名验证接口
  8. TX2上的Raspberry Pi相机
  9. Ubuntu 14.04 安装 fcitx(小企鹅) 输入法
  10. 【无标题】相册排版软件