C++ 在ubuntu18.04上找不到“Findaws lambda runtime.cmake”
试图构建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_包工作正常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
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不支持这种搜索。希望您已经看到查找原因,它不需要任何查找*,您只需要设置安装文件夹的路径