Qt Creator+CMake集成aws-sdk-cpp子模块:执行make install及路径配置
解决Qt Creator中CMake引入aws-sdk-cpp子模块的配置问题
我完全明白你的困境——你已经花了功夫编译好aws-sdk-cpp的Debug版本,却卡在CMake找不到配置文件这一步,而且不想走全局安装的路子。其实核心问题就是CMake不知道你已经编译好的aws-sdk-cpp在哪里,我们不用make install也能搞定,下面给你两种可行的方案:
方案一:直接指定已编译的aws-sdk-cpp路径
既然你已经有了15GB的编译目录,直接告诉CMake这个目录的位置就行。在你报错的app/CMakeLists.txt里,在find_package(AWSSDK)之前添加这段代码:
# 替换成你实际的aws-sdk-cpp编译目录路径 # 比如如果你的子模块在3rdparty/aws-sdk-cpp,编译目录是它下面的build,就这么写: set(AWSSDK_DIR "${CMAKE_SOURCE_DIR}/3rdparty/aws-sdk-cpp/build") # 然后正常调用find_package,记得替换成你需要的组件 find_package(AWSSDK REQUIRED COMPONENTS s3 dynamodb)
小提示:如果你的编译目录里,
AWSSDKConfig.cmake不在根目录,而是在lib/cmake/AWSSDK这类子目录里,记得把AWSSDK_DIR指向那个子目录。
方案二:把aws-sdk-cpp作为CMake子项目引入(更推荐)
如果你的项目根CMakeLists还没把aws-sdk-cpp纳入子项目,这是更规范的做法,CMake会自动管理它的配置:
在项目根目录的CMakeLists.txt里添加:
# 添加aws-sdk-cpp子模块,第二个参数是它的构建目录(就是你已经编译好的那个15GB目录) add_subdirectory(3rdparty/aws-sdk-cpp build/aws-sdk-cpp)
之后在app/CMakeLists.txt里直接调用find_package(AWSSDK REQUIRED COMPONENTS ...)就行,CMake会自动识别到子项目的配置,不用再手动指定路径。
为什么不用make install也能行?
make install(MSVC下对应Qt Creator里的INSTALL构建目标)本质是把编译好的库、头文件和配置文件复制到一个统一的目录,方便CMake全局查找。但既然你已经在本地完成了编译,直接让CMake指向这个编译目录就足够了,完全没必要额外复制一遍文件。
几个注意点
- 确保你的CMake构建类型和aws-sdk-cpp的编译类型一致(都是Debug),不然会出现链接错误
- 一定要替换
COMPONENTS后面的内容为你实际要用的AWS服务组件,比如s3、sqs等 - 如果找不到
AWSSDKConfig.cmake,可以在你的15GB编译目录里全局搜索这个文件,找到后把路径准确填入AWSSDK_DIR
内容的提问来源于stack exchange,提问作者uniquenamehere
相关产品推荐
相关产品推荐

