[CMake] How to specify that a target link library is shared ?

Boudewijn Rempt boud at valdyas.org
Tue Oct 7 13:58:10 EDT 2008


On Tue, 7 Oct 2008, Andrea Borsic wrote:

> Dear All,
> 
> I am a recent user of CMake, and I cannot figure out how to tell CMake that a
> TARGET_LINK_LIBRARY is shared. I am working under Windows Xp with MS
> VisualStudio 2008, and the following is my CMakeLists file:
> 
> PROJECT(Triangle)
> 
> ADD_LIBRARY(triangle_lib SHARED triangle.c)
> 
> ADD_EXECUTABLE(tricall tricall.c)
> 
> TARGET_LINK_LIBRARIES(tricall triangle_lib)
> 
> With the first target I am building a shared library 'triangle_lib.dll' and
> with the second target I'd like to build an executable 'tricall' that links to
> such library.
> 
> Linking fails, as VS 2008 is looking for the static library
> 'triangle_lib.lib'. I have been searching the forums, and came across an
> example: TARGET_LINK_LIBRARIES(tricall SHARED triangle_lib), but then the
> linker looks for SHARED.lib, so 'SHARED' in not interpreted as a keyword but
> as the name of a library.
> 

Doesn't Windows always need a .lib file, even if you will runtime link against a .dll?
I seem to remember something like that from my Borland days.

> Does anybody know how I should specify that I am linking against a shared
> library ?
> 
> Thanks in advance for your advice,
> 
> Best Regards,
> 
> Andrea
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
> 
> 



More information about the CMake mailing list