On 11. May, 2009, at 18:38, Tyler Roscoe wrote:

On Mon, May 11, 2009 at 09:03:37AM -0700, Denis Scherbakov wrote:
MACRO(MYTEST argTemp)
 LIST(LENGTH argTemp varLen)
 MESSAGE("Len: ${varLen}")

 SET (argTemp "${argTemp}")

 LIST(LENGTH argTemp varLen)
 MESSAGE("Len: ${varLen}")
ENDMACRO ()

MYTEST("something;new")

# prints: 0, 2

Am I referring variables in MACRO correctly? Why second version prints correct length and the first - not?

Not entirely sure, but perhaps this is because (from the macro() docs):

"Note that the parameters to a macro and values such as ARGN are not
variables in the usual CMake sense. They are string replacements much
like the c preprocessor would do with a macro. If you want true CMake
variables you should look at the function command."

tyler

If I do

MYTEST(something;new)

i.e. without the quotes, I get

Len: 2
Len: 1


I think in your example (where you use the quotes) the problem is that argTemp IS a single string which gets literally replace at every occurrence of argTemp as Tyler mentioned.

Michael
_______________________________________________
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

Reply via email to