在 Windows 7 机器上,我无法读取任何包含分号的注册表值。

例如,如果您有 7-zip,请运行以下命令

SET(MYPATH  [HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path])
MESSAGE("MYPATH = ${MYPATH}")

结果是
MYPATH = [HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip;Path]

而不是按照以下 thread 的实际路径。我认为 cmake 支持包含“;”的注册表路径在 Windows 7 上坏了。有人可以确认吗?有什么解决办法吗?

最佳答案

According to the wiki ,您不能使用 SET 查看注册表项的值。注册表值仅在您对其执行某些缓存操作时才会被读取。例如,以下应输出您想要的路径:

GET_FILENAME_COMPONENT(MYPATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path]"
                       ABSOLUTE CACHE)
MESSAGE("MYPATH = ${MYPATH}")

关于cmake - 使用 cmake 读取注册表值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1762201/

10-12 23:43