Reading registry values with cmake
On a Windows 7 machine I cannot read an开发者_如何学JAVAy registry values that contain a semicolon.
For example if you have 7-zip, running the following
SET(MYPATH [HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path])
MESSAGE("MYPATH = ${MYPATH}")
results in
MYPATH = [HKEY_LOCAL_MACHINE\SOFTWARE\7-Zip;Path]
instead of the actual path as per the following thread. I think cmake support for registry paths that contain ";" are broken on Windows 7. Can somebody confirm this? Is there any work-around?
According to the wiki, you can't use SET
to view the value of a registry key. The registry value is only read when you do some cache operation on it. For example, the following should output the path you want:
GET_FILENAME_COMPONENT(MYPATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\7-Zip;Path]"
ABSOLUTE CACHE)
MESSAGE("MYPATH = ${MYPATH}")
精彩评论