【问题标题】:Problems installing AWS C++ SDK on Cloud9在 Cloud9 上安装 AWS C++ SDK 时出现问题
【发布时间】:2019-09-22 12:06:35
【问题描述】:

我正在尝试在我的 Cloud9 环境 (m4.large) 上安装 AWS C++ 开发工具包。我按照this 教程中的步骤操作。

我的步骤:

sudo yum -y install libcurl-devel openssl-devel libuuid-devel cmake3


wget https://github.com/aws/aws-sdk-cpp/archive/master.zip
unzip master.zip
rm master.zip

mkdir sdk_build && cd sdk_build

cmake3 ../aws-sdk-cpp-master -DBUILD_ONLY="dynamodb" //I changed s3 to dynamodb

make && cd ..

在文件dynamodb-demo.cpp

#include <aws/core/Aws.h>

int main(){ return 0;}

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)

project(dynamodb-demo)

find_package(aws-sdk-cpp)
add_definitions(-DUSE_IMPORT_EXPORT)
add_executable(dynamodb-demo dynamodb-demo.cpp)
target_link_libraries(dynamodb-demo aws-cpp-sdk-dynamodb)

问题似乎在这里,这个命令没有抛出任何错误,而是一个警告:

cmake3 -Daws-sdk-cpp_DIR=sdk_build .

输出:

    CMake Warning at /usr/share/cmake3/Modules/CMakeFindDependencyMacro.cmake:65 (find_package):
  By not providing "Findaws-c-event-stream.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "aws-c-event-stream", but CMake did not find one.

  Could not find a package configuration file provided by
  "aws-c-event-stream" with any of the following names:

    aws-c-event-streamConfig.cmake
    aws-c-event-stream-config.cmake

  Add the installation prefix of "aws-c-event-stream" to CMAKE_PREFIX_PATH or
  set "aws-c-event-stream_DIR" to a directory containing one of the above
  files.  If "aws-c-event-stream" provides a separate development package or
  SDK, be sure it has been installed.
Call Stack (most recent call first):
  sdk_build/aws-cpp-sdk-core/aws-cpp-sdk-core-config.cmake:2 (find_dependency)
  sdk_build/aws-sdk-cpp-config.cmake:1 (include)
  CMakeLists.txt:14 (find_package)


CMake Warning at CMakeLists.txt:14 (find_package):
  Found package configuration file:

    /home/ec2-user/environment/sdk_build/aws-sdk-cpp-config.cmake

  but it set aws-sdk-cpp_FOUND to FALSE so package "aws-sdk-cpp" is
  considered to be NOT FOUND.  Reason given by package:

  aws-sdk-cpp could not be found because dependency aws-c-event-stream could
  not be found.



-- Configuring done
-- Generating done
-- Build files have been written to: /home/ec2-user/environment

因此make 命令抛出fatal error: aws/core/Aws.h: No such file or directory,我理解,所以我猜错误应该在上面的命令中。

我尚未配置我的 AWS 凭证,但我认为这不会引发此类错误。这个问题似乎与cmake有关。

一些研究表明,aws-c-event-stream-config.cmake 应该位于 /home/ec2-user/environment/sdk_build/.deps/install/lib64/aws-c-event-stream/cmake

也许解决方法很简单,但我对cmake只有基本的了解。

【问题讨论】:

  • 而不是设置aws-sdk-cpp_DIR 变量尝试设置aws-sdk-cpp_ROOT 一个。这应该有助于 find_package 在链式 find_dependency 调用的情况下。
  • 如果我将其更改为cmake3 -Daws-sdk-cpp_ROOT=sdk_build .,它将无法再找到aws-sdk-cpp-config.cmake 以及Manually-specified variables were not used by the project: aws-sdk-cpp_ROOT
  • 嗯,你用的是什么版本的cmake3?可能是这个版本没有处理_ROOT 变量...无论如何,您可以设置CMAKE_PREFIX_PATH 变量,它应该适用于任何CMake 版本。并且在指定此类变量时最好使用绝对路径
  • 我使用version 3.6.1cmake3 -DCMAKE_PREFIX_PATH=/home/ec2-user/environment/sdk_build . 我也尝试在所有其他命令上使用绝对路径,但我仍然得到与问题中相同的错误/警告
  • 哦,您在不同的目录中有aws-c-event-stream-config.cmakeaws-cpp-sdk-core-config.cmake 脚本。尝试在CMAKE_PREFIX_PATH 中指定它们(使用分号; 作为分隔符)。您也可以尝试设置变量:-DCMAKE_PREFIX_PATH=/home/ec2-user/environment/sdk_build;/home/ec2-user/environment/sdk_build/.deps/install。顺便说一句,我对 AWS 不是很熟悉,但是这些脚本的位置对我来说似乎很奇怪。

标签: c++ amazon-web-services cmake aws-cloud9


【解决方案1】:

借助Tsyvarev's帮助项目配置:

cmake3 -DCMAKE_PREFIX_PATH=/home/ec2-user/environment/sdk_build/.deps/install/lib64/aws-checksums/cmake\;/home/ec2-user/environment/sdk_build/.deps/install/lib64/aws-c-common/cmake\;/home/ec2-user/environment/sdk_build/.deps/install/lib64/aws-c-event-stream/cmake\;/home/ec2-user/environment/sdk_build .

我也需要改变的地方:

构建 AWS 核心(不确定是否需要):

cmake3 ../aws-sdk-cpp-master -DBUILD_ONLY="core;dynamodb"

将此添加到您的CMakeLists.txt

target_link_libraries(dynamodb-demo aws-cpp-sdk-core)

并将标准设置为 C++ 11:

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多