[CMake] Using xilink

ycollette.nospam at free.fr ycollette.nospam at free.fr
Mon Nov 22 10:02:22 EST 2010


Hello,

I have added  set_property(TARGET Arc3D PROPERTY INTERPROCEDURAL_OPTIMIZATION 1) in my CMakeLists.txt.
I have removed the include(CMakeDetermineFortranCompiler) from my CMakeLists.txt.

Now, the intel fortran compiler is still correctly detected, but it seems that the microsoft visual linker is still used.
I have printed the variable CMAKE_LINKER and it's still set to:

-- CMAKE_LINKER           = C:/Program Files (x86)/Microsoft Visual Studio 8/VC/bin/link.exe

YC

On 11/22/2010 08:34 AM, Michael Wild wrote:
> On 11/22/2010 07:56 AM, ycollette.nospam at free.fr wrote:
>> I have a fortran project and I use the fortran intel compiler under windows XP 64 bits with cmake 2.8.2.
>> I added include(CMakeDetermineFortranCompiler) in my project and the intel fortran compiler is correctly detected.
> 
> Don't include CMakeDetermineFortranCompiler.cmake directly. That is an
> internal file. Ether use ENABLE_LANGUAGE(Fortran) instead, or list
> Fortran as one of the languages in your PROJECT call.

Correct.

>> But the intel linker is not correctly detected. Only the microsoft linker is detected. But to be able tu use the IPO option, using the xilink compiler is a necessity.
>> How can I force my project to use xilink instead of microsoft linker ?

Don't pass "-ipo" directly.  Instead, set the INTERPROCEDURAL_OPTIMIZATION
property on your target:

  http://www.cmake.org/cmake/help/cmake-2-8-docs.html#prop_tgt:INTERPROCEDURAL_OPTIMIZATION

CMake will pass -ipo and use xilink as necessary.

Use code like

  set_property(TARGET myexe PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)

to enable IPO for the "myexe" target or perhaps

  set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION 1)

to enable IPO for all targets.

-Brad


More information about the CMake mailing list