OPTIMIZE_DEPENDENCIES¶
在 3.19 版本中添加。
激活静态库和对象库的依赖项优化。
当此属性设置为 true 时,如果静态库和对象库不需要链接任何内容,则可以在生成时删除静态库或对象库的某些依赖项,因为静态库和对象库实际上不与任何内容链接。
如果静态库或对象库启用了依赖项优化,它首先会丢弃所有依赖项。然后,它会检查它最初拥有的所有直接和间接依赖项,并在满足以下任何条件时将其添加回来:
依赖项是通过
add_dependencies()
添加到库的。依赖项是通过库中由使用该依赖项的自定义命令生成的源文件添加到库的。
依赖项具有与之关联的任何
PRE_BUILD
、PRE_LINK
或POST_BUILD
自定义命令。依赖项包含任何由自定义命令生成的源文件。
依赖项包含任何产生与库相关的副作用的语言。目前,除 C、C++、Objective-C、Objective-C++、汇编和 CUDA 之外的所有语言都被假定会产生副作用。但是,一种语言的副作用被认为与另一种语言无关(例如,Fortran 库被认为没有任何与 Swift 库相关的副作用)。
例如,假设您有一个静态 Fortran 库,它依赖于一个静态 C 库,而该 C 库又依赖于一个静态 Fortran 库。顶层 Fortran 库启用了优化,而中间 C 库没有启用。如果您构建顶层 Fortran 库,底层的 Fortran 库也会构建,但中间的 C 库不会构建,因为 C 库没有任何与 Fortran 库相关的副作用。但是,如果您构建中间的 C 库,底层的 Fortran 库也会构建,即使它没有任何与 C 库相关的副作用,因为 C 库没有启用优化。
此属性由创建目标时 CMAKE_OPTIMIZE_DEPENDENCIES
变量的值初始化。