2011-10-06 13 views
13

सीएमके दस्तावेज के अनुसार, STREQUAL तुलना को या तो एक वैरिबल या STRING को पैरामीटर के रूप में लेने की अनुमति है। तो, नीचे दिए गए उदाहरण में, संदेश मुद्रित नहीं होता है, जो टूटा हुआ है:सीएमके का स्ट्राइकल काम नहीं कर रहा है

set(FUBARTEST "OK") 
if(FUBARTEST STREQUAL "OK") 
    message("It Worked") 
endif() 

कोई कारण यह दस्तावेज के रूप में क्यों काम नहीं कर रहा है?

उत्तर

21

मुद्दा अपने कैश था। मैंने अपना कैश हटा दिया और फिर से कॉन्फ़िगर किया और अब कोड काम करता है।

+7

सुनिश्चित नहीं है कि आप क्यों कम किए गए थे - यह अक्सर एक वैध समाधान होता है जब सीएमके अजीब तरीके से कार्य करता है। – Mark

11

मैं पहली बार में अपने उदाहरण का परीक्षण नहीं किया था, लेकिन जब मैंने किया था, मैं अपने कोड 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 
+1

परीक्षण के लिए धन्यवाद लेकिन यह स्पष्ट रूप से कैश मुद्दा था :( –

संबंधित मुद्दे