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

Joshua L. Blocher verbalshadow at gmail.com
Tue Oct 7 14:11:35 EDT 2008


Isn't the def files the defines the export symbols.

Boudewijn Rempt wrote:
> 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
>>
>>
>>     
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake
>   



More information about the CMake mailing list