我试图更好地理解CMake并倾注文档以便将gRPC移植到窗口,而且真正唠叨我的一件事是如何在文档中区分字符串输入和变量输入。例如,从CMake获取LINK_DIRECTORIES命令。它需要任意数量的目录但单独阅读文档我不清楚我是否可以将字符串变量传递给LINK_DIRECTORIES,一个字符串或任何一个。
例如:
如果设置了set(DIR, "/lib");
,则以下哪项有效:
1号
set(DIR, "/lib");
link_directories(DIR)
2号
link_directories(${DIR})
似乎LINK_DIRECTORIES采用字符串而不是变量。我通过编码和运行它找到了,但这种方式大大减慢了我的进度,因为我必须每行进行一次完整性检查。我的理解中缺少什么?
答案 0 :(得分:0)
在CMake documentation中,如果参数的名称是"变量"," list"或者包含单词"变量",那么你应该通过这个参数传递变量的名称。
示例:
具有签名
的命令set
set(<variable> <value>
[[CACHE <type> <docstring> [FORCE]] | PARENT_SCOPE])
接受变量名称作为第一个参数。
具有签名
的命令流list(LENGTH)
list(LENGTH <list> <output variable>)
接受变量名称作为第一个参数(此变量被解释为列表)。
具有签名
的命令流string(REGEX MATCH)
string(REGEX MATCH <regular_expression>
<output variable> <input> [<input>...])
接受变量名称作为fouth参数。
在所有其他情况下,参数只是字符串。因此,如果您想传递变量的值,则需要使用${}
表示法明确取消引用此变量。