【问题标题】:CMake: reading documentation and distinguishing string input from varCMake:阅读文档并将字符串输入与 var 区分开来
【发布时间】:2016-10-26 18:01:29
【问题描述】:

我试图更好地理解 CMake 并翻阅文档以便将 gRPC 移植到 Windows,而真正困扰我的一件事是如何区分文档中的字符串输入和变量输入。例如,从 CMake 获取 LINK_DIRECTORIES 命令。它需要任意数量的目录,但仅阅读文档,我不清楚是否可以将字符串变量传递给 LINK_DIRECTORIES、字符串或任何一个。

例如: 如果设置了set(DIR, "/lib");,则以下哪项有效:

1号

set(DIR, "/lib");
link_directories(DIR)

2号

link_directories(${DIR})

似乎 LINK_DIRECTORIES 接受字符串而不是变量。我是通过编码和运行它发现的,但是这种方式大大减慢了我的进度,因为我必须对每行进行一次完整性检查。我的理解中缺少什么?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    在 CMake documentation 中,如果参数的 name 是 "variable"、"list" 或包含单词 "variable",那么您应该通过 name of the variable 通过这个论点。

    例子:

    1. 有签名的命令set

      set(<variable> <value>
          [[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE])
      

      接受变量名作为第一个参数。

    2. 有签名的命令流list(LENGTH)

      list(LENGTH <list> <output variable>)
      

      接受变量名作为第一个参数(并且这个变量被解释为一个列表)。

    3. 有签名的命令流string(REGEX MATCH)

      string(REGEX MATCH <regular_expression>
          <output variable> <input> [<input>...])
      

      接受变量名作为第四个参数。

    在所有其他情况下,参数只是一个字符串。因此,如果您想传递变量的值,您需要使用${} 表示法明确取消引用此变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多