| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- OPTIMIZE_DEPENDENCIES
- ---------------------
- .. versionadded:: 3.19
- Activates dependency optimization of static and object libraries.
- When this property is set to true, some dependencies for a static or object
- library may be removed at generation time if they are not necessary to build
- the library, since static and object libraries don't actually link against
- anything.
- If a static or object library has dependency optimization enabled, it first
- discards all dependencies. Then, it looks through all of the direct and
- indirect dependencies that it initially had, and adds them back if they meet
- any of the following criteria:
- * The dependency was added to the library by :command:`add_dependencies`.
- * The dependency was added to the library through a source file in the library
- generated by a custom command that uses the dependency.
- * The dependency has any ``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` custom
- commands associated with it.
- * The dependency contains any source files that were generated by a custom
- command.
- * The dependency contains any languages which produce side effects that are
- relevant to the library. Currently, all languages except C, C++, Objective-C,
- Objective-C++, assembly, and CUDA are assumed to produce side effects.
- However, side effects from one language are assumed not to be relevant to
- another (for example, a Fortran library is assumed to not have any side
- effects that are relevant for a Swift library.)
- As an example, assume you have a static Fortran library which depends on a
- static C library, which in turn depends on a static Fortran library. The
- top-level Fortran library has optimization enabled, but the middle C library
- does not. If you build the top Fortran library, the bottom Fortran library will
- also build, but not the middle C library, since the C library does not have any
- side effects that are relevant for the Fortran library. However, if you build
- the middle C library, the bottom Fortran library will also build, even though
- it does not have any side effects that are relevant to the C library, since the
- C library does not have optimization enabled.
- This property is initialized by the value of the
- :variable:`CMAKE_OPTIMIZE_DEPENDENCIES` variable when the target is created.
|