2009-11-19 151 views
4

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

例如,如果你有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上坏了。有人可以证实这一点吗?有没有解决方法?

+2

这就是为什么我认为使用使用通用脚本语言编译系统是一个更好的解决方案。我正在考虑像Waf(Python)或Rake(Ruby)这样的解决方案。 – sorin 2009-12-22 17:31:08

回答

4

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

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

只需注意,在我看来,CMake无法读取REG_DWORD值。它只能读取字符串? – lef 2017-04-18 12:52:04