From 4266d54adbd87fe6eb64bec31441fef1920589ce Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 24 Jun 2009 13:24:50 -0400 Subject: ENH: Mention cycles in target_link_libraries docs This documents CMake's support for cycles in the dependency graph of STATIC libraries. --- Source/cmTargetLinkLibrariesCommand.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Source/cmTargetLinkLibrariesCommand.h b/Source/cmTargetLinkLibrariesCommand.h index d4c0ec2..ed0d904 100644 --- a/Source/cmTargetLinkLibrariesCommand.h +++ b/Source/cmTargetLinkLibrariesCommand.h @@ -107,6 +107,28 @@ public: "the LINK_INTERFACE_LIBRARIES property. " "Libraries specified as \"general\" (or without any keyword) are " "treated as if specified for both \"debug\" and \"optimized\"." + "\n" + "The library dependency graph is normally acyclic (a DAG), but in the " + "case of mutually-dependent STATIC libraries CMake allows the graph " + "to contain cycles (strongly connected components). " + "When another target links to one of the libraries CMake repeats " + "the entire connected component. " + "For example, the code\n" + " add_library(A STATIC a.c)\n" + " add_library(B STATIC b.c)\n" + " target_link_libraries(A B)\n" + " target_link_libraries(B A)\n" + " add_executable(main main.c)\n" + " target_link_libraries(main A)\n" + "links 'main' to 'A B A B'. " + "(" + "While one repetition is usually sufficient, pathological object " + "file and symbol arrangements can require more. " + "One may handle such cases by manually repeating the component in " + "the last target_link_libraries call. " + "However, if two archives are really so interdependent they should " + "probably be combined into a single archive." + ")" ; } -- cgit v0.12