gpt4 book ai didi

cmake - 在 CMake 中使用空字符串设置缓存变量有什么意义?

转载 作者:行者123 更新时间:2023-12-04 15:35:40 27 4
gpt4 key购买 nike

我见过在 Cmake 中设置/使用缓存变量的不同方法。标准是什么?

将空字符串 ("") 设置为缓存变量有什么意义?

例子

set(NVTX_ROOT_DIR "" CACHE PATH "Folder contains NVIDIA NVTX")

最佳答案

What's the point of setting an empty string ("") to the cache variable?

这不仅仅是设置缓存变量的值。

命令流 set(CACHE) 通常执行两件事:

  1. 声明参数(指定描述和可能的类型)
  2. 设置参数的默认值。 (也就是说,如果参数已设置,则其值不会更改)。

CACHE 变量的空值可能意味着此变量表示的参数 未设置。根据使用它的项目,这可以解释为:

  • 不要使用参数描述的功能。
  • 发出一个错误,告知参数应由用户设置。

在 CMake 代码中检查参数可以用简单的 if(VAR) 实现:

if(NVTX_ROOT_DIR)
# The parameter is set
else()
# The parameter is not set
endif()

虽然 if(NVTX_ROOT_DIR) 为 false,即使 variable 未设置,但如果不设置其值,则无法声明该参数。因此,将空字符串作为默认值是一个合乎逻辑的选择,因为它能够使用简单的 if(NVTX_ROOT_DIR) 检查参数设置是否缺失。

关于cmake - 在 CMake 中使用空字符串设置缓存变量有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59867283/

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