Tej*_*ula 3 cmake amazon-web-services aws-sdk
我正在我的应用程序中构建亚马逊的 aws-sdk-cpp。所以我从aws-sdk-cpp.tar.gz文件中提取内容并作为 ExternalProject 运行。
ExternalProject_Add(awssdk
PREFIX DIR
URL ${CMAKE_CURRENT_SOURCE_DIR}/${AWS_SDK_SRC_TAR}
BUILD_COMMAND ${CMAKE_COMMAND} cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_ONLY='dynamodb;kenisis' -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/Ext/Aws/CtcInstall/${CMAKE_INSTALL_PREFIX} -DENABLE_TESTING=OFF ${CMAKE_BINARY_DIR}/source
Run Code Online (Sandbox Code Playgroud)
But, when i pass -DBUILD_ONLY='dynamodb;kenisis'(supported by aws cmake file), Build is failing. If i pass -DBUILD_ONLY=dynamodb only dynamodb related targets are getting generated. But i need kenisis related targets also. How can i pass that semicolon separated list in ExternalProject_Add.
自己做一些测试 - 包括@usr1234567 评论中的提示 - 我确实成功运行了以下内容(为了更容易重现,我将 Git 地址放在示例中):
ExternalProject_Add(
awssdk
PREFIX DIR
GIT_REPOSITORY https://github.com/aws/aws-sdk-cpp.git
CMAKE_CACHE_ARGS
-DCMAKE_BUILD_TYPE:String=${CMAKE_BUILD_TYPE}
-DBUILD_ONLY:String=dynamodb\\;kinesis
-DCMAKE_INSTALL_PREFIX:String=${CMAKE_BINARY_DIR}/Ext/Aws/CtcInstall
-DENABLE_TESTING:String=OFF
)
Run Code Online (Sandbox Code Playgroud)
笨拙的双反斜杠是必要的,因为它ExternalProject_Add()本身是一个 CMake 脚本函数,它经历了几个参数扩展循环。
选择
更通用的方法是使用这样的$<SEMICOLON>生成器表达式:
ExternalProject_Add(
awssdk
PREFIX DIR
GIT_REPOSITORY https://github.com/aws/aws-sdk-cpp.git
CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DBUILD_ONLY=dynamodb$<SEMICOLON>kinesis
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/Ext/Aws/CtcInstall
-DENABLE_TESTING=OFF
)
Run Code Online (Sandbox Code Playgroud)
仅出于演示目的,我还在此处使用了另一种传递参数的方式。
| 归档时间: |
|
| 查看次数: |
763 次 |
| 最近记录: |