关于CMake专家的一个问题.根据CMake 函数文档,函数根本不返回任何内容.要更改变量值,必须将其传递给函数,并在函数内部设置指定PARENT_SCOPE选项的新值.很好,这是CMake的一个众所周知的功能.
我的问题不是关于如何,而是关于为什么:为什么CMake函数不返回值?背后的想法是什么?例如,函数不能在if表达式中使用,也不能在set命令内部调用.如果我没记错的话,它与autotools是一样的,因此我认为这不是偶然的.
有专家知道为什么吗?
您可以在CMake 邮件列表的消息中找到Ken Martin的部分答案:
\n\n\n\n\n对于函数返回值的一般问题,它是可以完成的,但这是一个很大的改变。对于使用它们的人来说,函数和命令\n 看起来是相同的(并且应该以相同的方式执行)。\n 因此,我们实际上正在讨论返回值的命令。这主要只是一个语法问题。现在我们有
\n
command(arg arg arg\n) \nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n为了支持返回值,我们需要一些可以处理的东西
\n
command (arg command2(arg arg) arg arg \n) \nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n或者在你的情况下
\n
if(assertdef(foo))\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n或者在另一种情况下
\n
set(foo get_property(\n)) \nRun Code Online (Sandbox Code Playgroud)\n\n\n\n这会影响 CMake 中的解析器和参数处理,但我认为这是可以完成的。我想我\xe2\x80\x99m 不确定我们是否应该这样做。\n 在这里接受意见。
\n
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |