<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Calibri" size="2"><span style="font-size:11pt;">
<div>We are using cmake 2.8.11 for out project.&nbsp; </div>
<div>&nbsp;</div>
<div>Our local compiler is gcc-4.4.3.&nbsp; There is desire to use a newer compiler, but we are not yet ready to commit to anything yet.&nbsp; In the mean time we have installed binaries gcc-4.7 and gcc-4.8.&nbsp; We can specify the alternate compiler with &#8211;DCMAKE_C_COMPILER=gcc-4.7,
but we want to go a step farther:&nbsp; one (believed important) advantage of gcc-4.7 is the option -mtune=atom since that is are target system. We want to force this option when using the newer compiler, but the older version of gcc doesn&#8217;t accept it.</div>
<div>&nbsp;</div>
<div>Toolchain files are not an option, when you use a toolchain file cmake sets CMAKE_CROSSCOMPILING meaning parts of our system that depend on running on x86 will not run.&nbsp; (it is up to a different team to make a build for other processors &#8211; they are nowhere
close to done but that variable is used in a few places to disable things that my team needs).&nbsp; </div>
<div>&nbsp;</div>
<div>Here is what we come up with, which both feels icky, and seems like a bad compromise:</div>
<div>&nbsp;</div>
<div style="margin-bottom:10pt;">IF(&quot;4.8.0&quot; STREQUAL ${CMAKE_CXX_COMPILER_VERSION} OR &quot;4.8.1&quot; STREQUAL ${CMAKE_CXX_COMPILER_VERSION} OR &quot;4.8&quot; STREQUAL ${USE_GCC_VERSION})</div>
<div style="margin-bottom:10pt;">&nbsp;   SET(CMAKE_CXX_COMPILER &quot;g&#43;&#43;-4.8&quot;)</div>
<div style="margin-bottom:10pt;">    SET(CMAKE_C_COMPILER &quot;gcc-4.8&quot;)</div>
<div style="margin-bottom:10pt;">&nbsp;   SET(CMAKE_CXX_FLAGS &quot;${CMAKE_CXX_FLAGS} -g -std=c&#43;&#43;11&quot;)</div>
<div style="margin-bottom:10pt;">&nbsp;&nbsp;&nbsp; SET(CMAKE_CXX_FLAGS &quot;${CMAKE_CXX_FLAGS} -Wno-unused-local-typedefs&quot; CACHE STRING &quot;&quot; FORCE)</div>
<div style="margin-bottom:10pt;"> ELSEIF(&quot;4.7.1&quot; STREQUAL ${CMAKE_CXX_COMPILER_VERSION} OR &quot;4.7.2&quot; STREQUAL ${CMAKE_CXX_COMPILER_VERSION} OR &quot;4.7&quot; STREQUAL ${USE_GCC_VERSION})</div>
<div style="margin-bottom:10pt;">  &nbsp; SET(CMAKE_CXX_COMPILER &quot;g&#43;&#43;-4.7&quot;)</div>
<div style="margin-bottom:10pt;">  &nbsp; SET(CMAKE_C_COMPILER &quot;gcc-4.7&quot;)</div>
<div>ENDIF(&quot;4.8.0&quot; STREQUAL ${CMAKE_CXX_COMPILER_VERSION} OR &quot;4.8.1&quot; STREQUAL ${CMAKE_CXX_COMPILER_VERSION} OR &quot;4.8&quot; STREQUAL ${USE_GCC_VERSION})</div>
<div>&nbsp;</div>
<div>The advantage of this is you can&#8217;t accidentally use gcc-4.4 and g&#43;&#43;-4.8 &#8211; we force them in sync. You can also set USE_GCC_VERSION on the command line and it takes both gcc and g&#43;&#43;, instead of having to set both CMAKE_C_COMPILER and CMAKE_CXX_COMPILER (and
the line to remember is shorter).&nbsp; If you do this will work (until we upgrade gcc, but I can solve that)</div>
<div>&nbsp;</div>
<div>What is the &#8220;right&#8221; thing to do &#8211; and why is it right?</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
</span></font>
</body>
</html>