CMake 2.6 supports functions as well. CMake 2.4 doesn&#39;t, however.<br><br>I think your initial point is good one, though. There is still a significant dependence on global variables in CMake and especially CTest. Additionally, as has been discussed, there&#39;s not even a completely consistent naming convention for those variables, nor is the documentation anything like good enough at covering everything. It really is a significant barrier to entry.<br>
<br>It&#39;s unfortunate, but I don&#39;t know that it can be fixed, really. CMake puts a great deal of effort into backwards compatibility, and changing away from global variables or at least having a massive rename-fest would be difficult to achieve with anything like compatibility. Perhaps CMake 3.0 could have a clean break...<br>
<br>Ceej<br>aka Chris Hillery<br><br><div class="gmail_quote">On Sun, Jun 27, 2010 at 1:52 PM, Convey, Christian J CIV NUWC NWPT <span dir="ltr">&lt;<a href="mailto:christian.convey@navy.mil">christian.convey@navy.mil</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;">Hi Alan,<br>
<br>
Thanks, I wasn&#39;t aware of the shift towards the use of FUNCTIONs.  Because of the developers I need to support, I&#39;ve been mosting working with CMake 2.6.  I didn&#39;t realize that this was one of the things 2.8 brought to the table.<br>

<font color="#888888"><br>
- Christian<br>
</font><div class="im"><br>
&gt; -----Original Message-----<br>
&gt; From: Alan W. Irwin [mailto:<a href="mailto:irwin@beluga.phys.uvic.ca">irwin@beluga.phys.uvic.ca</a>]<br>
&gt; Sent: Sunday, June 27, 2010 16:49<br>
&gt; To: Convey, Christian J CIV NUWC NWPT<br>
&gt; Cc: <a href="mailto:alokgovil@hotmail.com">alokgovil@hotmail.com</a>; <a href="mailto:cmake@cmake.org">cmake@cmake.org</a><br>
</div><div><div></div><div class="h5">&gt; Subject: Re: [CMake] An observation about CTest<br>
&gt;<br>
&gt; Your remarks focus on old-fashioned macros so it is possible<br>
&gt; you are not aware of functions? As far as I know, most or all<br>
&gt; macros can be replaced by functions which do have the nice<br>
&gt; property of not polluting the global namespace.  So newly<br>
&gt; developed build systems should use functions wherever<br>
&gt; possible, and certainly for old CMake-based build systems I<br>
&gt; am associated with I am trying to move to functions as time permits.<br>
&gt;<br>
&gt; Here are some rough counts of functions and macros actually<br>
&gt; contained in 2.8.x:<br>
&gt;<br>
&gt; irwin@raven&gt; grep -i function cmake-2.8/Modules/*.cmake |grep<br>
&gt; -v &#39;#&#39; |wc -l<br>
&gt; 263<br>
&gt; irwin@raven&gt; grep -i macro cmake-2.8/Modules/*.cmake |grep -v<br>
&gt; &#39;#&#39; |wc -l<br>
&gt; 337<br>
&gt;<br>
&gt; Those numbers should be divided by roughly a factor of two<br>
&gt; (because of ENDFUNCTION and ENDMACRO) to get approximate<br>
&gt; counts of functions and macros.<br>
&gt;<br>
&gt; Clearly, the replacement of macros by functions is well on<br>
&gt; its way for 2.8.x, but the process is still far from<br>
&gt; completed.  Once it is complete, however, the global<br>
&gt; namespace will be much less polluted.<br>
&gt;<br>
&gt; Another namespace remark is that subdirectory variables do<br>
&gt; not pollute the global namespace of their parent directories.<br>
&gt;<br>
&gt; So the global namespace pollution issue is not as bad as you<br>
&gt; have outlined and because of functions is steadily improving.<br>
&gt;<br>
&gt; Alan<br>
</div></div><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></blockquote></div><br>