On 14/11/13 20:39, Brad King wrote: > On 11/14/2013 12:09 PM, Daniele E. Domenichelli wrote: >> Is this a wanted behaviour? If it is, perhaps it should be documented in >> macro() command documentation. > > The "macro" command documentation says: > > http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:macro > Note that the parameters to a macro ... are not variables > > The "if" command documentation says: > > http://www.cmake.org/cmake/help/v2.8.12/cmake.html#command:if > Note macro arguments are not variables.
Ok there is some documentation, but perhaps it is not very clear what you cannot do with a macro parameter: * it's not a variable but it isn't either a list (the list() documentation says "A list in cmake is a ; separated group of strings", and doesn't mention macro arguments). Therefore you cannot use the list() command. * foreach(IN LISTS), does not mention that it won't work with macro parameters. * The if() command mentions that in the documentation of the if(var) form, but not in the if(DEFINED var). Also the problem that gave me more issues is that I was using ARGN like this: macro(_BAR) foreach(arg IN LISTS ARGN) [...] endforeach() endmacro() function(_FOO) _bar(x y z) endfunction() _foo(a b c) And it took a lot of time to realize that I was using the list from the current scope, not from the macro. So I believe that some more documentation would be helpful... If you agree, I can write it... Cheers, Daniele -- 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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers