Hello,<br><br>this is a question I recently asked on stackoverflow (<a href="http://stackoverflow.com/questions/9129233/recommended-ways-to-use-cmake-with-icc-via-configuration-options">http://stackoverflow.com/questions/9129233/recommended-ways-to-use-cmake-with-icc-via-configuration-options</a>) but that has not received any response since then. Maybe this mailing list is a better place to ask... Here goes<br>
<p>I would like to use the Intel compiler icc (or icpc) with a 
CMake-based project (on Linux for what it&#39;s worth). I can of course 
export the CXX variable when calling cmake, e.g. like</p>

<pre><code>CXX=icpc cmake ../
</code></pre><p>and this works fine. I would however like to make this choice 
available via a custom option. For this I parse custom option, e.g.</p>

<pre><code>cmake -DMY_COMPILER_OPTION=Intel ..
</code></pre>

<p>as</p>

<pre><code>IF (MY_COMPILER_OPTION STREQUAL &quot;Intel&quot;)
  MESSAGE(STATUS &quot;** Compiling with Intel settings **&quot;)
  SET(CMAKE_CXX_COMPILER &quot;icpc&quot;)
  SET(CMAKE_CXX_FLAGS_RELEASE &quot;-O3 -w&quot;)
  SET(CMAKE_CXX_FLAGS_DEBUG &quot;-g&quot;)
ENDIF ()
</code></pre>

<p>and set <code>CMAKE_CXX_COMPILER</code> together with some compiler flags. This also works, however there is an important &quot;but&quot;.</p>

<p>I would also like to use the option <code>-ipo</code> 
(interprocedural optimization) for my code when compiling with icc plus I
 need to compile a static library within the build process. For this to 
work, I need to use Intel&#39;s <code>xiar</code> (and also <code>xilink</code> I guess).</p>

<p>cmake actually offers a special property for this</p>

<pre><code>set_property(TARGET mytarget PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)
</code></pre>

<p>however this only seems to works properly when the compiler has been 
set via the environment variable (then xiar is used). When setting the 
compiler via <code>CMAKE_CXX_COMPILER</code> this property is ignored.</p>

<p>Is there another way to do this?. Some recommended way? Or at least a work-around?</p><p><br></p><p>Cheers, Oliver<br></p>