[CMake] how to really change CMake linker

David Cole dlrdave at aol.com
Tue Aug 12 08:38:52 EDT 2014


Unless it is overridden somewhere else along the way, the following is
used to create the link command line for a C++ executable:

    (found in Modules/CMakeCXXInformation.cmake)

    if(NOT CMAKE_CXX_LINK_EXECUTABLE)
      set(CMAKE_CXX_LINK_EXECUTABLE
         "<CMAKE_CXX_COMPILER>  <FLAGS> <CMAKE_CXX_LINK_FLAGS>
<LINK_FLAGS> <OBJECTS>  -o <TARGET> <LINK_LIBRARIES>")
    endif()

As you can see, by default, the C++ compiler is used as a front end to
link C++ executables...

Similarly for other types of targets, there are
CMAKE_CXX_CREATE_SHARED_LIBRARY and CMAKE_CXX_CREATE_SHARED_MODULE. And
for other languages, there are CMAKE_${LANG}_CREATE_... variables too.

In order to use the linker you want, you would have to define a custom
CMAKE_CXX_LINK_EXECUTABLE that uses "<CMAKE_LINKER>" in its definition
of the linker command line.


HTH,
David C.




More information about the CMake mailing list