CMAKE_BUILD_TYPE is automatically set to a default initial value by
CMake in most cases before it gets to your IF(NOT DEFINED... (So, it's
&quot;always&quot; defined -- in your case.)<br>
<br>
It is conditionally set from different cmake scripts that are run based
on generator and compiler chosen. It is not set at all when using a
Visual Studio or Xcode generator, for example, so you can build any
configuration from the build environment's UI.<br>
<br>
So... if you want others to be able to use Visual Studio or Xcode
generators on your project, it's best to avoid assumptions about
CMAKE_BUILD_TYPE in your CMakeLists files. If it's set, you can use
it's value. If it's not set, then the target environment probably
supports multiple configurations selectable at build time by the
developer. You can also poke around for examples dealing with variables
CMAKE_CONFIGURATION_TYPES and CMAKE_CFG_INTDIR for supporting multiple
configuration build systems at CMake configure time...<br>
<br>
<br>
HTH,<br>
David Cole<br>
<br><br><div><span class="gmail_quote">On 12/6/06, <b class="gmail_sendername">David Blado</b> &lt;<a href="mailto:dblado@decarta.com">dblado@decarta.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">









<div link="blue" vlink="purple" lang="EN-US">

<div>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">Hi,</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">I'm trying to setup a cmake system where as cmake
&lt;directory&gt; will by default be a release build.&nbsp; If someone issues cmake –DCMAKE_BUILD_TYPE:STRING=debug
it should overwrite the default to produce a debug build.</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">The only way I've found to do this is with:</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp; IF(CMAKE_BUILD_TYPE MATCHES &quot;debug&quot;)</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp; SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE})</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp; ELSE(CMAKE_BUILD_TYPE MATCHES &quot;debug&quot;)</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp;&nbsp; SET(CMAKE_BUILD_TYPE &quot;release&quot;)</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp; ENDIF(CMAKE_BUILD_TYPE MATCHES &quot;debug&quot;)</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">I would have thought that the following should work:</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">IF(NOT DEFINED CMAKE_BUILD_TYPE)</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;&nbsp; SET(CMAKE_BUILD_TYPE "release")</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">ENDIF(NOT DEFINED CMAKE_BUILD_TYPE)</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">Obviously this is preferred since it is fewer lines and
executes just a tiny bit faster </span></font><font face="Wingdings" size="2"><span style="font-size: 10pt; font-family: Wingdings;">J</span></font><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">
</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">Anyone have any ideas as to why only the former works?</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">Cheers,</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">David</span></font></p>

<p><font face="Arial" size="2"><span style="font-size: 10pt; font-family: Arial;">&nbsp;</span></font></p>

</div>

</div>



<br>_______________________________________________<br>CMake mailing list<br><a onclick="return top.js.OpenExtLink(window,event,this)" href="mailto:CMake@cmake.org">CMake@cmake.org</a><br><a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">
http://www.cmake.org/mailman/listinfo/cmake</a><br><br></blockquote></div><br>