2009-11-19 102 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