按照CMake的文件中,STREQUAL
比較被允許採取任何變量或字符串的任一參數。因此,在下面這個例子中,該消息不打印,這是破:的CMake的STREQUAL不工作
set(FUBARTEST "OK")
if(FUBARTEST STREQUAL "OK")
message("It Worked")
endif()
有什麼理由因爲這個文件是不是工作?
按照CMake的文件中,STREQUAL
比較被允許採取任何變量或字符串的任一參數。因此,在下面這個例子中,該消息不打印,這是破:的CMake的STREQUAL不工作
set(FUBARTEST "OK")
if(FUBARTEST STREQUAL "OK")
message("It Worked")
endif()
有什麼理由因爲這個文件是不是工作?
問題是我的緩存。我刪除了我的緩存和重新配置,而現在的代碼工作。
我沒有先測試你的榜樣,但是當我做到了,我看到你的代碼工作正常上cmake的2.8.0,並在文檔發佈的其他組合也這樣做:
set(FUBARTEST "OK")
if(FUBARTEST STREQUAL "OK")
message("FUBARTEST Worked")
else()
message("FUBARTEST FAILED")
endif()
set(FOO "OK")
if(${FOO} STREQUAL "OK")
message("string STREQUAL string works")
else()
message("string STREQUAL string FAILED")
endif()
set(FOO "OK")
set(BAR "OK")
if(FOO STREQUAL BAR)
message("variable STREQUAL variable works")
else()
message("variable STREQUAL variable FAILED")
endif()
set(FOO "OK")
if(FOO STREQUAL "OK")
message("variable STREQUAL string works")
else()
message("variable STREQUAL string FAILED")
endif()
給輸出:
FUBARTEST Worked
string STREQUAL string works
variable STREQUAL variable works
variable STREQUAL string works
感謝測試,但它是一個緩存的問題顯然是:( –
不知道爲什麼你downvoted - 這常常是一個有效的解決方案時,CMake的行爲很奇怪。 – Mark