CMP0112

3.19 版本中新增。

目标文件组件生成器表达式不会添加目标依赖项。

以下基于目标的生成器表达式用于查询目录或文件名组件,它们不再添加对已评估目标的依赖项。

  • TARGET_FILE_NAME

  • TARGET_FILE_DIR

  • TARGET_LINKER_FILE_BASE_NAME

  • TARGET_LINKER_FILE_NAME

  • TARGET_LINKER_FILE_DIR

  • TARGET_SONAME_FILE_NAME

  • TARGET_SONAME_FILE_DIR

  • TARGET_PDB_FILE_NAME

  • TARGET_PDB_FILE_DIR

  • TARGET_BUNDLE_DIR

  • TARGET_BUNDLE_DIR_NAME

  • TARGET_BUNDLE_CONTENT_DIR

在 CMake 3.18 及更低版本中,将始终添加对上述生成器表达式的已评估目标的依赖项。CMake 3.19 及更高版本倾向于不添加此依赖项。此策略为尚未更新以预期新行为的项目提供兼容性。此策略设置会在创建每个目标时记录在该目标上,并决定引用该目标的生成器表达式是否意味着对其产生依赖项。

此策略的 OLD 行为是对上述生成器表达式中已评估的目标添加依赖项。此策略的 NEW 行为是对上述生成器表达式中已评估的目标不添加依赖项。

此策略在 CMake 版本 3.19 中引入。它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未对其进行设置,CMake 在默认情况下发出警告并使用 OLD 行为。

请参阅 CMAKE_POLICY_WARNING_CMP0112 变量的文档以控制警告。

注意

某个策略的 OLD 行为 定义 弃用,并且可能会在未来的版本中移除。