[CMake] Don't understand simple code

Tyler Roscoe tyler at cryptio.net
Mon May 11 12:38:10 EDT 2009


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


More information about the CMake mailing list