我正在我的应用程序中构建amazon的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
但是,当我通过-DBUILD_ONLY='dynamodb;kenisis'
(由aws cmake文件支持)时,Build失败了。如果我通过-DBUILD_ONLY=dynamodb
,则仅生成与dynamodb相关的目标。但我也需要kenisis
个相关目标。我如何在ExternalProject_Add中传递以分号分隔的列表。
答案 0 :(得分:1)
自己做一些测试 - 包括@ usr1234567评论中的提示 - 我确实成功运行了以下内容(为了更容易再现,我在示例中放了Git地址):
ItemSerializer
笨拙的双反斜杠是必要的,因为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
)
本身是一个CMake脚本函数,它经历了几个参数扩展循环。
<强>替代强>
更通用的方法是使用ExternalProject_Add()
生成器表达式,如下所示:
$<SEMICOLON>
出于演示目的,我也在使用另一种方法来传递参数。