gpt4 book ai didi

amazon-web-services - cmake 文件中 cmake 命令的分号分隔列表

转载 作者:行者123 更新时间:2023-12-04 01:51:48 24 4
gpt4 key购买 nike

我正在我的应用程序中构建亚马逊的 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 文件支持)时,构建失败。如果我通过 -DBUILD_ONLY=dynamodb,只会生成与 dynamodb 相关的目标。但我还需要 kenisis 相关目标。我如何在 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
)

笨拙的双反斜杠是必要的,因为 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
)

只是为了演示目的,我还使用了另一种方式在这里传递参数。

关于amazon-web-services - cmake 文件中 cmake 命令的分号分隔列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com