Commit 4266d54a authored by Brad King's avatar Brad King
Browse files

ENH: Mention cycles in target_link_libraries docs

This documents CMake's support for cycles in the dependency graph of
STATIC libraries.
parent f74b876a
......@@ -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."
")"
;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment