I'm using CMake-2.8 on winxp with Visual Studio 2005 generator.
lets say I've a dll created (A.dll) from some cxx files and a static library static.lib
So I call Link_Directories to specify the directory where the static library is located. Now A.dll is built开发者_StackOverflow社区 fine.
Now I want B.dll built from some cxx sources, A.lib (the import lib of A.dll)
Now when I say Target_Link_Libraries for (B A), the project file is created with static.lib also as a dependency. Now B has two dependencies A and static.lib. But I'm not adding the directory of static.lib to Link_Directories for B and my build fails.
I do not think B needs to know about static.lib
Any Ideas how to avoid this ?
Thanks in advance, Surya
From the CMake docs:
Library dependencies are transitive by default. When this target is linked into another target then the libraries linked to this target will appear on the link line for the other target too. See the LINK_INTERFACE_LIBRARIES target property to override the set of transitive link dependencies for a target.
Hence, this should solve your problem:
TARGET_LINK_LIBRARIES(B LINK_INTERFACE_LIBRARIES A)
精彩评论