使用cmake读取注册表值
在Windows7机器上,我无法读取任何包含分号的注册表值 例如,如果您有7-zip,请运行以下命令使用cmake读取注册表值,cmake,registry,Cmake,Registry,在Windows7机器上,我无法读取任何包含分号的注册表值 例如,如果您有7-zip,请运行以下命令 SET(MYPATH [HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path]) MESSAGE("MYPATH = ${MYPATH}") 导致 MYPATH = [HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip;Path] 而不是实际路径,如下所示。我认为在Windows7上,cmake对包含“;”的注册表路径的支持已被破坏。有人能证实这
SET(MYPATH [HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path])
MESSAGE("MYPATH = ${MYPATH}")
导致
MYPATH = [HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip;Path]
而不是实际路径,如下所示。我认为在Windows7上,cmake对包含“;”的注册表路径的支持已被破坏。有人能证实这一点吗?有什么解决办法吗?,您不能使用SET
查看注册表项的值。只有在对注册表值执行缓存操作时,才会读取该注册表值。例如,以下内容应输出所需的路径:
GET_FILENAME_COMPONENT(MYPATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path]"
ABSOLUTE CACHE)
MESSAGE("MYPATH = ${MYPATH}")
这就是为什么我认为使用一个使用通用脚本语言的构建系统是一个更好的解决方案。我正在考虑像Waf(Python)或Rake(Ruby)这样的解决方案。只是要注意,在我看来CMake无法读取REG_DWORD值。它只能读字符串?