CMP0118 — CMake 4.2.6 Documentation

# CMP0118

Added in version 3.20.

`GENERATED` sources may be used across directories without manual marking.

In CMake 3.19 and below, the `GENERATED` source file property, like other source file properties, was scoped in every directory separately. If a source file was generated in one directory, projects had to manually set the `GENERATED` property in another directory in order to use the file.

Whether or not a source file is generated is an all-or-nothing global property of the source: a source is either generated or it is not. CMake 3.20 and above prefer to allow source files generated in one directory to be used in other directories without manually marking them as `GENERATED`. Additionally, the `GENERATED` property may now be set only to boolean values, and may not be turned off once turned on. This policy provides compatibility for projects that have not been updated for this behavior.

The `OLD` behavior of this policy is to allow generated files to be used only in directories in which their `GENERATED` property has been turned on. The `NEW` behavior of this policy is to allow generated files to be used in other directories without explicitly turning on the `GENERATED` property for those directories.

Added in version 3.30: Policy `CMP0163` additionally makes the `GENERATED` source file property visible to `get_property()` and `get_source_file_property()` calls in other directories.

This policy was introduced in CMake version 3.20. It may be set by `cmake_policy()` or `cmake_minimum_required()`. If it is not set, CMake warns about setting the `GENERATED` property to a non-boolean value, and uses `OLD` behavior.

Note

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