[CMake] Don't understand simple code
Michael Wild
themiwi at gmail.com
Mon May 18 11:08:19 EDT 2009
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
More information about the CMake
mailing list