Re: [CMake] Double Substitution in IF Statement

2009-11-19 Thread Marcel Loose
Hi Aaron,

If I run your script (using CMake 2.6.2) I get

-- CONTAINS_LIB = TRUE

as output. Isn't that what you expected? If not, then I'm missing the
point of your macro LIST_CONTAINS. What version of CMake are you using?

Best regards,
Marcel Loose.

On Wed, 2009-11-18 at 09:54 -0800, aaron_wri...@selinc.com wrote:
 I have a little question about how to prevent double substitution in
 an IF statement. 
 
 Consider this macro that looks through a list for a string, and sets a
 variable to TRUE if it is found. The problem I have is that the IF
 statement substitutes ${VALUE2} with LIB, and then substitutes LIB
 with HELLO, and finds what it's looking for, even though it wasn't
 really there. I want it to stop at the first substitution to prevent
 this weird behavior. Ideas? 
 
 MACRO(LIST_CONTAINS VAR VALUE) 
 SET(${VAR}) 
 
 FOREACH(VALUE2 ${ARGN}) 
 IF(${VALUE} STREQUAL ${VALUE2}) 
 SET(${VAR} TRUE) 
 ENDIF() 
 ENDFOREACH() 
 ENDMACRO() 
 
 SET(LIB HELLO) 
 SET(LIBS LIB IS GREAT) 
 
 LIST_CONTAINS(CONTAINS_LIB ${LIB} ${LIBS}) 
 
 MESSAGE(STATUS CONTAINS_LIB = ${CONTAINS_LIB}) 
 -
 Aaron Wright
 Software Engineer - DCS Group
 Schweitzer Engineering Laboratories, Inc.
 Pullman, WA 99163
 509-334-8087
 ___
 Powered by www.kitware.com
 
 Visit other Kitware open-source projects at 
 http://www.kitware.com/opensource/opensource.html
 
 Please keep messages on-topic and check the CMake FAQ at: 
 http://www.cmake.org/Wiki/CMake_FAQ
 
 Follow this link to subscribe/unsubscribe:
 http://www.cmake.org/mailman/listinfo/cmake

___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] Double Substitution in IF Statement

2009-11-19 Thread Michael Wild
No, it should be empty because he wants to test whether HELLO is in  
LIBS. But inside the IF statement, the ${VALUE} that evaluates to LIB  
(a member of LIBS) gets then expanded again to HELLO.


Quite funny actually. However, reading the manpage closely only the  
left-hand value of STREQUAL gets expanded, so reversing the statement  
solves the problem.



Michael

On 19. Nov, 2009, at 9:40 , Marcel Loose wrote:


Hi Aaron,

If I run your script (using CMake 2.6.2) I get

-- CONTAINS_LIB = TRUE

as output. Isn't that what you expected? If not, then I'm missing the
point of your macro LIST_CONTAINS. What version of CMake are you  
using?


Best regards,
Marcel Loose.

On Wed, 2009-11-18 at 09:54 -0800, aaron_wri...@selinc.com wrote:

I have a little question about how to prevent double substitution in
an IF statement.

Consider this macro that looks through a list for a string, and  
sets a

variable to TRUE if it is found. The problem I have is that the IF
statement substitutes ${VALUE2} with LIB, and then substitutes LIB
with HELLO, and finds what it's looking for, even though it wasn't
really there. I want it to stop at the first substitution to prevent
this weird behavior. Ideas?

MACRO(LIST_CONTAINS VAR VALUE)
   SET(${VAR})

   FOREACH(VALUE2 ${ARGN})
   IF(${VALUE} STREQUAL ${VALUE2})
   SET(${VAR} TRUE)
   ENDIF()
   ENDFOREACH()
ENDMACRO()

SET(LIB HELLO)
SET(LIBS LIB IS GREAT)

LIST_CONTAINS(CONTAINS_LIB ${LIB} ${LIBS})

MESSAGE(STATUS CONTAINS_LIB = ${CONTAINS_LIB})
-
Aaron Wright
Software Engineer - DCS Group
Schweitzer Engineering Laboratories, Inc.
Pullman, WA 99163
509-334-8087
___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake


[CMake] Double Substitution in IF Statement

2009-11-18 Thread Aaron_Wright
I have a little question about how to prevent double substitution in an IF 
statement.

Consider this macro that looks through a list for a string, and sets a 
variable to TRUE if it is found. The problem I have is that the IF 
statement substitutes ${VALUE2} with LIB, and then substitutes LIB with 
HELLO, and finds what it's looking for, even though it wasn't really 
there. I want it to stop at the first substitution to prevent this weird 
behavior. Ideas?

MACRO(LIST_CONTAINS VAR VALUE)
SET(${VAR})

FOREACH(VALUE2 ${ARGN})
IF(${VALUE} STREQUAL ${VALUE2})
SET(${VAR} TRUE)
ENDIF()
ENDFOREACH()
ENDMACRO()

SET(LIB HELLO)
SET(LIBS LIB IS GREAT)

LIST_CONTAINS(CONTAINS_LIB ${LIB} ${LIBS})

MESSAGE(STATUS CONTAINS_LIB = ${CONTAINS_LIB})
-
Aaron Wright
Software Engineer - DCS Group
Schweitzer Engineering Laboratories, Inc.
Pullman, WA 99163
509-334-8087___
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake