CMP0112 — CMake 4.2.6 Documentation

# CMP0112

Added in version 3.19.

Target file component generator expressions do not add target dependencies.

The following target-based generator expressions that query for directory or file name components no longer add a dependency on the evaluated target.

- `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`

In CMake 3.18 and lower a dependency on the evaluated target of the above generator expressions would always be added. CMake 3.19 and above prefer to not add this dependency. This policy provides compatibility for projects that have not been updated to expect the new behavior. The policy setting is recorded on each target when it is created, and decides whether generator expressions referencing that target imply a dependency on it.

The `OLD` behavior for this policy is to add a dependency on the evaluated target for the above generator expressions. The `NEW` behavior of this policy is to not add a dependency on the evaluated target for the above generator expressions.

This policy was introduced in CMake version 3.19. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake does not warn by default, and uses `OLD` behavior.

See documentation of the `CMAKE_POLICY_WARNING_CMP0112` variable to control the warning.

Note

The `OLD` behavior of a policy is `deprecated by definition` and may be removed in a future version of CMake.