So I created a small project to attempt to reproduce this problem on a much smaller scale, but it functioned as designed in that case.<div><br></div><div>It&#39;s only in my large, corporate project that this happens. Is there any way to dump a &quot;scope stack&quot; or call stack of some sort in CMake? That way I can see what the real parent scope is? Maybe it&#39;s not what I think it is.<br clear="all">
<div><br></div><div>---------</div>Robert Dailey<br>
<br><br><div class="gmail_quote">On Thu, Oct 20, 2011 at 3:42 PM, Michael Hertling <span dir="ltr">&lt;<a href="mailto:mhertling@online.de">mhertling@online.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On 10/20/2011 08:44 PM, Robert Dailey wrote:<br>
&gt; On Thu, Oct 20, 2011 at 12:56 PM, Michael Hertling &lt;<a href="mailto:mhertling@online.de">mhertling@online.de</a>&gt;wrote:<br>
&gt;<br>
&gt;&gt; On 10/20/2011 06:59 PM, Robert Dailey wrote:<br>
&gt;&gt;&gt; Let me ask this,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; What would be the parent of a function located in the root CMakeLists<br>
&gt;&gt; file<br>
&gt;&gt;&gt; but called from a subordinate CMakeLists file?<br>
&gt;&gt;<br>
&gt;&gt; It&#39;s the subordinate CMakeLists.txt file&#39;s parent, but what Michael<br>
&gt;&gt; probably aims at is that some variables undergo a lazy evaluation,<br>
&gt;&gt; i.e. when you say<br>
&gt;&gt;<br>
&gt;&gt; set( CMAKE_MFC_FLAG 2 )<br>
&gt;&gt; add_executable( ... )<br>
&gt;&gt;<br>
&gt;&gt; in a function, and CMAKE_MFC_FLAG isn&#39;t evaluated till generation time,<br>
&gt;&gt; the value &quot;2&quot; will be lost since it is limited to the function&#39;s scope.<br>
&gt;&gt; See the following project for an example:<br>
&gt;<br>
&gt;<br>
&gt; Does this lazy evaluation also apply to variables set with PARENT_SCOPE? If<br>
&gt; so, that would explain why not even that helped.<br>
<br>
</div></div>If the variable is subject to lazy evaluation - not all variables are,<br>
and I don&#39;t know if CMAKE_MFC_FLAG is - it doesn&#39;t matter how it has<br>
received its final value at the concerned CMakeLists.txt&#39;s end, i.e.<br>
if it has been set in the CMakeLists.txt immediately or in a function<br>
using PARENT_SCOPE or in a subordinate CMakeLists.txt file entered by<br>
ADD_SUBDIRECTORY(), also using PARENT_SCOPE; the latest value will be<br>
in effect for the generation step.<br>
<br>
BTW, I talked trash:<br>
<div class="im"><br>
&gt;&gt;&gt; What would be the parent of a function located in the root CMakeLists<br>
&gt;&gt; file<br>
&gt;&gt;&gt; but called from a subordinate CMakeLists file?<br>
&gt;&gt;<br>
</div>&gt;&gt; It&#39;s the subordinate CMakeLists.txt file&#39;s parent, [...]<br>
<br>
This is not true, of course. A function called from a CMakeLists.txt<br>
file opens up its own scope, and its parent scope is the one of the<br>
calling CMakeLists.txt file, not the one of the latter&#39;s parent.<br>
Sorry about the mistake.<br>
<br>
If your issue still persists, could you come up with a minimal<br>
but complete exemplary project for further investigation?<br>
<br>
Regards,<br>
<div><div></div><div class="h5"><br>
Michael<br>
--<br>
<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
</div></div></blockquote></div><br></div>