C++ 在ubuntu18.04上找不到“Findaws lambda runtime.cmake”

C++ 在ubuntu18.04上找不到“Findaws lambda runtime.cmake”,c++,amazon-web-services,cmake,aws-lambda,C++,Amazon Web Services,Cmake,Aws Lambda,试图构建hello world示例,但cmake总是抱怨 通过在cmake_模块_路径中不提供Findaws-lambda-runtime.cmake project已要求CMake查找由提供的包配置文件 aws lambda运行时,但CMake未找到运行时 环境 OS:ubuntu18.04.3 LTS,64位 安装curl by:sudo apt get安装libcurl4 openssl dev 通过ubuntu软件cmake版本3.16.1安装cmake 构建和安装aws lambda

试图构建hello world示例,但cmake总是抱怨

通过在cmake_模块_路径中不提供Findaws-lambda-runtime.cmake project已要求CMake查找由提供的包配置文件 aws lambda运行时,但CMake未找到运行时

环境

OS:ubuntu18.04.3 LTS,64位 安装curl by:sudo apt get安装libcurl4 openssl dev 通过ubuntu软件cmake版本3.16.1安装cmake 构建和安装aws lambda cpp的步骤

git克隆 cd aws lambda cpp mkdir构建 光盘制作 克马克-DCMAKE\u BUILD\u TYPE=Release-DBUILD\u SHARED\u LIBS=OFF\ -DCMAKE_INSTALL_PREFIX=${PWD}/INSTALL make-j2 sudo制作安装 CmakeLists.txt省略另一部分,首先要确保find_包工作正常

cmake_minimum_required(VERSION 3.5)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(aws_cpp_test LANGUAGES CXX)

list(APPEND CMAKE_MODULE_PATH "/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/build/")
list(APPEND CMAKE_MODULE_PATH "/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/cmake/")

find_package(aws-lambda-runtime REQUIRED)

add_executable(${PROJECT_NAME} "main.cpp")
我不使用ec2构建项目,我如何告诉cmake在哪里可以找到aws lambda运行时

编辑:

根据Yevhenii Mamontov的建议,我将CMakeLists.txt更改为

cmake_minimum_required(VERSION 3.5)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(aws_cpp_test LANGUAGES CXX)

set(AWS_LAMBDA_CMAKE "/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/cmake/")
set(CMAKE_PREFIX_PATH "${AWS_LAMBDA_CMAKE};${CMAKE_PREFIX_PATH}")
#check the prefix paths are correct or wrong
foreach(path ${CMAKE_PREFIX_PATH})
  message("Path: " ${path})
endforeach(path)

find_package(aws-lambda-runtime REQUIRED)
但它有不同的错误信息

CMake错误在 /home/yyyy/Qt/3rdLibs/aws lambda cpp/cmake/aws lambda runtime config.cmake:6 包含:包含找不到加载文件:

/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/cmake/@CMAKE_PROJECT_NAME@-targets.cmake
我尝试了不同的途径

set(AWS_LAMBDA_CMAKE "/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/build/install")
set(AWS_LAMBDA_CMAKE "/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/build/install/lib/aws-lambda-runtime/cmake")
并尝试不添加任何新路径,但所有路径都给出相同的错误消息

编辑2:

想办法让它工作起来

删除/home/yyyy/Qt/3rdLibs/aws lambda cpp/cmake/aws-lambda-runtime-config.cmake的内容 将路径设置为setAWS_LAMBDA_CMAKE/home/yyyy/Qt/3rdLibs/aws LAMBDA cpp/build/install/lib/aws LAMBDA runtime/CMAKE 但是,此解决方案很难使用,应首先要求cmake不要从路径/home/yyyy/Qt/3rdLibs/aws lambda cpp/cmake进行搜索

编辑3:

我在编辑2中编写的解决方案不起作用。当我添加时,它失败了

add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME} PUBLIC AWS::aws-lambda-runtime)
错误消息是

目标aws_cpp_测试链接到目标aws::aws lambda运行时,但 未找到目标。可能缺少一个查找包调用 导入的目标,或者缺少别名目标?

能否尝试在find\u包之前设置CMAKE\u PREFIX\u路径? 大概是这样的:

set(AWS_LAMBDA_CMAKE "/home/yyyy/Qt/3rdLibs/aws-lambda-cpp/cmake/")
set(CMAKE_PREFIX_PATH "${AWS_LAMBDA_CMAKE};${CMAKE_PREFIX_PATH}")
第一个集合创建一个变量,该变量具有lib-cmake文件夹的路径。
第二组在CMAKE_PREFIX_PATH后面附加一个路径,用于搜索在find_package中指定的任何包。

要找到解决方案,只需设置安装的aws库的路径

例如:

cmake_minimum_required(VERSION 3.5)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(encoder LANGUAGES CXX)

set(AWS_LAMBDA_CMAKE ${CMAKE_CURRENT_SOURCE_DIR}/../../3rdLibs/aws-lambda-cpp/build/install/)
set(AWS_LAMBDA_CPP_SDK ${CMAKE_CURRENT_SOURCE_DIR}/../../3rdLibs/aws-sdk-cpp/build/install/)
set(CMAKE_PREFIX_PATH "${AWS_LAMBDA_CMAKE};${CMAKE_PREFIX_PATH};${AWS_LAMBDA_CPP_SDK}")

find_package(CURL REQUIRED)
find_package(aws-lambda-runtime REQUIRED)
find_package(AWSSDK COMPONENTS s3)

add_executable(${PROJECT_NAME} "main.cpp")
target_link_libraries(${PROJECT_NAME}
${CURL_LIBRARIES}
AWS::aws-lambda-runtime
${AWSSDK_LINK_LIBRARIES})

aws_lambda_package_target(${PROJECT_NAME})
如果您还没有安装,您可能需要在ubuntu上安装以下libs

sudo apt-get install zlib1g-dev libssl-dev libcurl4-openssl-dev

我得到了同样的错误,标记为“解决方案”的答案运行得很好,但我也发现这是可行的:

set(aws-lambda-runtime_DIR /lib/aws-lambda/lib64/aws-lambda-runtime/cmake/)
我使用的是CMake 3.13,在按照安装说明运行CMake时,在/lib/aws lambda上安装了lambda运行时:

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/lib/aws-lambda

谢谢,尝试了几个路径,但都失败了,看起来cmake总是试图从同一个路径找到包。嗯,这很奇怪,因为我可以指定.././lib/cmake和cmake的路径。至少Qt5 LIB都表现良好。您确定此aws lambda cpp有FindMe.cmake或etc文件吗?尝试自己搜索该文件,如果找到,请指定CMakeLists.txt该文件所在文件夹的完整路径。希望这能对你有所帮助。它没有任何以单词find,weird,indeedThan开头的文件。我可能会建议你的版本的aws lambda cpp不支持这种搜索。希望您已经看到查找原因,它不需要任何查找*,您只需要设置安装文件夹的路径