CMP0161 — CMake 4.1.4 Documentation

# CMP0161

Added in version 3.29.

The `CPACK_PRODUCTBUILD_DOMAINS` variable defaults to true.

Before CMake 3.29, the `CPACK_PRODUCTBUILD_DOMAINS` variable is unset by default. When using the `CPack productbuild Generator`, this disables the use of the `domains` attribute in the productbuild Distribution XML, and falls back to the `auth` attribute instead. These attributes control where a productbuild package is allowed to be installed. But the `auth` attribute has been deprecated by Apple, so projects should migrate to using `domains` instead.

CMake 3.29 and above prefer to use a default value of true for `CPACK_PRODUCTBUILD_DOMAINS`, which means `domains` will be used by default unless the project explicitly sets `CPACK_PRODUCTBUILD_DOMAINS` to false. This policy provides compatibility with projects that enabled the `CPack productbuild Generator`, but did not explicitly set `CPACK_PRODUCTBUILD_DOMAINS`.

The `OLD` behavior for this policy is to leave `CPACK_PRODUCTBUILD_DOMAINS` unset if it hasn't been set. The `NEW` behavior for this policy is to use a default value of true for `CPACK_PRODUCTBUILD_DOMAINS`.

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

Note that a warning will only be emitted if the `CPACK_BINARY_PRODUCTBUILD` variable is set to true and the project is being built for an Apple platform.

Note

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