[CMake] How is the linker language of a library determined?

Robin Verschueren robin.verschueren at gmail.com
Tue Nov 7 18:29:27 EST 2017


Hi there,

I'm building some C code into a library. The library needs to link to a C++
static library (IMPORTED target). I'm puzzled by the following:

   - with BUILD_SHARED_LIBS=OFF (default), everything works as expected and
   CMake sees the C library as a "C++ library" (i.e. it uses the C++
   compiler/linker to link the two libraries together into a static library).
   - with BUILD_SHARED_LIBS=ON however, CMake tries to link the C library
   to the C++ library with cc (clang in my case), and I get linker errors.

My questions:

*What mechanism does CMake use to determine the linker language, and why is
it different in these two cases?* Is it because I want to link a shared
library against a static library as opposed to two static ones? Or is
BUILD_SHARED_LIBS a red herring? Does CMake have a notion of what linker
language to use for IMPORTED targets?

I'm looking forward to your answer,
Robin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20171107/4073a492/attachment.html>


More information about the CMake mailing list