Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用cmake读取注册表值_Cmake_Registry - Fatal编程技术网

使用cmake读取注册表值

使用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对包含“;”的注册表路径的支持已被破坏。有人能证实这

在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
查看注册表项的值。只有在对注册表值执行缓存操作时,才会读取该注册表值。例如,以下内容应输出所需的路径:

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

这就是为什么我认为使用一个使用通用脚本语言的构建系统是一个更好的解决方案。我正在考虑像Waf(Python)或Rake(Ruby)这样的解决方案。只是要注意,在我看来CMake无法读取REG_DWORD值。它只能读字符串?