[CMake] How to use CMake with icc via configuration options when needing interprocedural optimization?

janitor 048 janitor048 at googlemail.com
Tue Feb 7 08:43:01 EST 2012


Hello,

this is a question I recently asked on stackoverflow (
http://stackoverflow.com/questions/9129233/recommended-ways-to-use-cmake-with-icc-via-configuration-options)
but that has not received any response since then. Maybe this mailing list
is a better place to ask... Here goes

I would like to use the Intel compiler icc (or icpc) with a CMake-based
project (on Linux for what it's worth). I can of course export the CXX
variable when calling cmake, e.g. like

CXX=icpc cmake ../

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.

cmake -DMY_COMPILER_OPTION=Intel ..

as

IF (MY_COMPILER_OPTION STREQUAL "Intel")
  MESSAGE(STATUS "** Compiling with Intel settings **")
  SET(CMAKE_CXX_COMPILER "icpc")
  SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -w")
  SET(CMAKE_CXX_FLAGS_DEBUG "-g")
ENDIF ()

and set CMAKE_CXX_COMPILER together with some compiler flags. This also
works, however there is an important "but".

I would also like to use the option -ipo (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's xiar (and
also xilink I guess).

cmake actually offers a special property for this

set_property(TARGET mytarget PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)

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 CMAKE_CXX_COMPILER this property is ignored.

Is there another way to do this?. Some recommended way? Or at least a
work-around?


Cheers, Oliver
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120207/8227b8ee/attachment.htm>


More information about the CMake mailing list