使用cmake配置aws-cpp-sdk以及在cmake项目中使用
目录
- 环境
- 配置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项目中使用相关推荐
- winpcapp配置c++网口通讯_MES、SCADA项目中的数据采集—基于C#与研华IO模块ModbusTCP通讯...
写在面前 大家好,我是捞仪,号主小智前同事~ 前面我们介绍了PLC与PLC的通讯,PC与PLC之间的通讯(见文末推荐),就工业环境而言,通讯方式和通讯协议多种多样,通讯的硬件也是五花八门.但是通讯做多 ...
- 阿里云SDK和SpringBoot maven项目中jar包冲突的解决办法
stringboot项目在引用阿里云短信sdk时,出现jar包冲突问题,项目可以正常启动,但是启动会报如图错误 解决办法,在maven中查找到冲突的jar,并用exclusions隔离冲突的jar & ...
- Linux环境中对海康威视工业相机SDK进行二次开发(QT+CMake+Opencv+海康SDK)
关于在Windows环境中对海康威视工业相机SDK进行二次开发的话,可以参考这两篇博客. 海康威视工业相机SDK二次开发(VS+Opencv+QT+海康SDK+C++)(一) 海康威视工业相机SDK二 ...
- Android Studio使用cmake配置c++开发Admob
使用c++开发Admob可以构建跨平台的广告集成体验,不用为不同平台编写原生语言的广告集成代码,也更加方便纯native开发的软件进行广告植入.通过官方教程和demo的研究, 踩了若干坑之后,终于在n ...
- Android NDK—CMake配置及使用
文章目录 安装NDK和CMake 新建NDK项目 代码实现 编译构建 如何使用 自身项目使用 其他项目使用 安装NDK和CMake 打开AS的Prefrences->Android SDK-&g ...
- 【Android NDK 开发】Android.mk 配置动态库 ( Android Studio 配置动态库 | 动态库加载版本限制 | 本章仅做参考推荐使用 CMake 配置动态库 )
文章目录 I . Android Studio 中使用 Android.mk 配置动态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...
- 【Android NDK 开发】Android Studio 的 NDK 配置 ( 源码编译配置 | 构建脚本配置 | 打包配置 | CMake 配置 | ndkBuild 配置 )
文章目录 I . 源码编译配置 II . 构建脚本配置 III . NDK 函数库打包配置 IV . Java 与 C 代码示例 V . CMake 配置 ( CMakeLists.txt ) VI ...
- aws python库_适用于Alexa的新AWS Python SDK入门指南
aws python库 by Ralu Bolovan 由Ralu Bolovan 适用于Alexa的新AWS Python SDK入门指南 (A Beginner's guide to the ne ...
- ubuntu vscode通过cmake配置c++和VS2019一样 进行调试
之前的 linux下vscode配置c++,使其和Visual Studio2019一样调试文章和本篇类似,配置vscode使其和vs2019进行调试和编译,但是之前的文章不是很实用,是通过命令行的形 ...
最新文章
- android平台自动化编译环境搭建一hudson安装
- Confluence 6 重要缓存和监控
- STL之七:STL各种容器的使用时机详解
- 关于IB_DESIGNABLE / IBInspectable的那些事
- C/C++中Static和Const的作用
- Redis--事务理解
- 积跬步以至千里_“积跬步以至千里”——第三届世界老年旅游大会推进会昨日召开...
- GIS案例练习-----------第六天
- passwd命令限制用户密码到期时间
- ZStack实践汇 | 高效开发测试打造产品化私有云
- 2022(2021JCR)SCI期刊影响因子完整版
- 最新苹果CMSV10视频电影网站源码+自适应手机版
- 2021年最佳开源软件榜单出炉!
- Java位运算符:Java移位运算符、复合位赋值运算符及位逻辑运算符
- 玩赚亚丁号---薅羊毛专业版
- 百分点数据科学实验室:产品生命周期管理创新应用落地实践
- 近年来Person Re-identification论文汇总
- PHP 图片上传 图片压缩
- android多屏幕多分辨率的一些概念
- Android 详解第三方介质交互之NFC,并且实现读你的交通卡,酒店房卡,学生证!