On Mon, Jul 06, 2009 at 06:07:11PM +0100, Nick Davidson wrote:
> macro (MakeCustomTarget TARGET_FILE CPP XML)
>   add_custom_target(TARGET_FILE ALL          
>     COMMAND process ${TARGET_FILE} ${CPP}
>     COMMAND process ${TARGET_FILE} ${XML})
>   message(STATUS "Cannot find xgettext")       
> endmacro (MakeCustomTarget TARGET_FILE CPP XML) 
> 
> calling MakeCustomTarget("TargetFile" ${LIST1} ${LIST2}) where LIST1 and

I would definitely expect that you need to put quotes around "${LIST1}"
and "${LIST2}" to presvere their listiness.

> LIST2 are semi-colon separated lists causes the first two elements of
> whatever the LIST1 was to get passed as CPP and XML - I had to resort to
> quoting the arguments and then turning them back in to lists with a set.
> 
> macro (MakeCustomTarget TARGET_FILE CPP XML)
>   set(CPP_LIST ${CPP})
>   set(XML_LIST ${XML})
>     add_custom_target(TARGET_FILE ALL          
>     COMMAND process ${TARGET_FILE} ${CPP_LIST}
>     COMMAND process ${TARGET_FILE} ${XML_LIST})
> endmacro (MakeCustomTarget TARGET_FILE CPP XML) 
> 
> MakePot("project.pot" "${LIST1}" "${LIST2}")

I'm not so sure about this, but you may be tripping across the fact that
arguments to a macro aren't real variables but are instead like C
preprocessor #defines. Look at the docs for macro() for more details.

If you don't like your set() workaround, you might be able to use a
function() instead of a macro(), as function() behaves a little
differently.

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