Am Dienstag, den 09.02.2010, 11:34 +0100 schrieb Michael Wild:
> On 9. Feb, 2010, at 11:05 , Micha Renner wrote:
> 
> > A DLL-library is linked to static library. 
> > The structure of the project is this:
> > 
> > main-project 
> >     +--------- Project STATIC
> >     |
> >     +--------- Project DLL
> > 
> > This works very well.
> > But if I include the following export part to the project of the DLL...
> > 
> > INSTALL(TARGETS T-DLL EXPORT T-DLLExport 
> >             RUNTIME DESTINATION dll         
> >             LIBRARY DESTINATION lib
> >             ARCHIVE DESTINATION lib)
> > INSTALL(EXPORT T-DLLExport DESTINATION lib/${T-DLL})
> > 
> > ... CMake generates the message: "CMake Error: INSTALL(EXPORT
> > "TLIBExport" ...) includes target "T-DLL" which requires target
> > "T-Static" that is not in the export set."
> > 
> > This is unexpected. I don't want export the static library because it is
> > already linked to the DLL and it is used only by the DLL.
> > 
> > Micha
> 
> But CMake can't know that somebody linking against the DLL won't need the 
> static library. This is because the static library might contain additional 
> symbols which are not used directly by any of the code in the DLL, and thus 
> are not present in there. That's one of the most surprising facts of static 
> linking...
This is true. Now, I understand the default behavior of CMake (Not bad,
CMake of course).  
> 
> The solution is to tell CMake explicitly which of the libraries are "in the 
> link interface" and thus must be also exported using the 
> LINK_INTERFACE_LIBRARIES target property of your DLL. Set it to the list of 
> libraries which appear in the "link interface" of your library (i.e. NOT the 
> static library you're talking about). But be careful, if you miss any of the 
> real dependencies, all hell might break loose at any time, even far in the 
> future...

Hopeless, I would have never found this solution.
Thank you very much.
Micha



_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to