gpt4 book ai didi

cmake - 将列表转换为 cmake 函数的参数

转载 作者:行者123 更新时间:2023-12-04 00:09:35 29 4
gpt4 key购买 nike

假设我们有一个名为 func 的 CMake 函数它接受命名参数,比如 NAMED1NAMED2 .第一个参数是强制性的,第二个是可选的。例如

func(NAMED1 foo NAMED2 optional)

现在我有一个循环需要调用这个函数 func在每次迭代中,但根据当前的迭代,我有时需要提供可选值,有时不需要。所以在每次迭代时,我都会构建一个参数列表,比如
list(APPEND args "NAMED1" "foo")
if (...something...)
list(APPEND args "NAMED2" "optional")
endif()

所以我有 args现在列出。作为一个字符串,它可能看起来像
NAMED1;foo

或者它可能看起来像
NAMED1;foo;NAMED2;optional

所以我想用字符串替换整个列表
string(REPLACE ";" " " args "${args}")

然后产生的 args看起来像
NAMED1 foo NAMED2 optional

所以我想把这个字符串传递给函数 func , 和
func("${args}")

但现在的问题是 CMake 认为这是一个大字符串,而它应该将其解释为单独的字符串。我怎样才能做到这一点?

最佳答案

把我的评论变成答案

刚刚func(${args})没有引号,也不需要替换 ;应该管用。

过去我一直在使用它很多次(特别是使用 ${ARGN} 转发“其余参数”)。

引用文献

  • cmake: when to quote variables?
  • 关于cmake - 将列表转换为 cmake 函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38117708/

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