ENH: Mention cycles in target_link_libraries docs
This documents CMake's support for cycles in the dependency graph of STATIC libraries.
This commit is contained in:
parent
f74b876a58
commit
4266d54adb
|
@ -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."
|
||||
")"
|
||||
;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue