1OPTIMIZE_DEPENDENCIES 2--------------------- 3 4.. versionadded:: 3.19 5 6Activates dependency optimization of static and object libraries. 7 8When this property is set to true, some dependencies for a static or object 9library may be removed at generation time if they are not necessary to build 10the library, since static and object libraries don't actually link against 11anything. 12 13If a static or object library has dependency optimization enabled, it first 14discards all dependencies. Then, it looks through all of the direct and 15indirect dependencies that it initially had, and adds them back if they meet 16any of the following criteria: 17 18* The dependency was added to the library by :command:`add_dependencies`. 19* The dependency was added to the library through a source file in the library 20 generated by a custom command that uses the dependency. 21* The dependency has any ``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` custom 22 commands associated with it. 23* The dependency contains any source files that were generated by a custom 24 command. 25* The dependency contains any languages which produce side effects that are 26 relevant to the library. Currently, all languages except C, C++, Objective-C, 27 Objective-C++, assembly, and CUDA are assumed to produce side effects. 28 However, side effects from one language are assumed not to be relevant to 29 another (for example, a Fortran library is assumed to not have any side 30 effects that are relevant for a Swift library.) 31 32As an example, assume you have a static Fortran library which depends on a 33static C library, which in turn depends on a static Fortran library. The 34top-level Fortran library has optimization enabled, but the middle C library 35does not. If you build the top Fortran library, the bottom Fortran library will 36also build, but not the middle C library, since the C library does not have any 37side effects that are relevant for the Fortran library. However, if you build 38the middle C library, the bottom Fortran library will also build, even though 39it does not have any side effects that are relevant to the C library, since the 40C library does not have optimization enabled. 41 42This property is initialized by the value of the 43:variable:`CMAKE_OPTIMIZE_DEPENDENCIES` variable when the target is created. 44