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