<br><div class="gmail_quote">On Fri, Jan 16, 2009 at 6:23 PM, James Bigler <span dir="ltr">&lt;<a href="mailto:jamesbigler@gmail.com">jamesbigler@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
This code seems to produce the correct output with either a macro or a function prototype.<br><br><span style="font-family: courier new,monospace;">macro( foo )<br>&nbsp; list( APPEND my_list &quot;+&quot; )<br>&nbsp; list( LENGTH my_list length )<br>

&nbsp; if( length LESS ${somevar} )<br>&nbsp;&nbsp;&nbsp; foo()<br>&nbsp; endif()<br>&nbsp; # Add this line in for functions<br>&nbsp; set( my_list ${my_list} PARENT_SCOPE )<br>endmacro()<br><br>set(somevar 100)<br>set(my_list &quot;&quot;)<br>foo()<br>message(&quot;my_list = ${my_list}&quot;)<br>

</span><br style="font-family: courier new,monospace;"><br>My guess is that the code isn&#39;t necessarily inlined, but interpreted on the fly with special rules about variable scope.<br><br>James</blockquote></div><br>Well my real code is slightly more complex. When I run it I get
infinite recursion of some sort and I have to forcefully close CMake in
order to stop it. Recursion in CMake isn&#39;t entirely intuitive so if
someone could breeze over this code and give me some pointers I&#39;d
really appreciate that.<br>
<br>
<br>
<span style="font-family: courier new,monospace;">macro( add_includes_impl target_name )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; get_target_property( target_dependencies ${target_name} LINK_INTERFACE_LIBRARIES )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; foreach( dep ${target_dependencies} )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( IS_TARGET ${dep} )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message( &quot;${dep}&quot; )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list( APPEND flattened_includes ${dep_includes} )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add_includes_impl( ${dep} )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; endif()</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; endforeach()</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">endmacro()</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">macro( add_includes target_name )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; set( flattened_includes )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">&nbsp;&nbsp;&nbsp; add_includes_impl( target_name )</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">endmacro()</span><br>