Modify the default behavior of Qt's CMake API.

The command is defined in the Core component of the Qt6 package, which can be loaded like so:

find_package(Qt6 REQUIRED COMPONENTS Core)

This command was introduced in Qt 6.5.


    [SET <policy_name> behavior]
    [GET <policy_name> <variable>]

If versionless commands are disabled, use qt6_policy() instead. It supports the same set of arguments as this command.


This command has two modes:

  • When the SET keyword is used, this command can be used to opt in to behavior changes in Qt's CMake API, or to explicitly opt out of them.
  • When the GET keyword is used, <variable> is set to the current behavior for the policy, i.e. OLD or NEW.

<policy_name> must be the name of one of the Qt CMake policies. Policy names have the form of QTP<NNNN> where <NNNN> is an integer specifying the index of the policy. Using an invalid policy name results in an error.

Code supporting older Qt versions can check the existence of a policy by checking the value of the QT_KNOWN_POLICY_<policy_name> variable before getting the value of <policy_name> or setting its behavior.

    qt_policy(SET <policy_name> NEW)

You can set behavior to one of the following options:

  • NEW to opt into the new behavior
  • OLD to explicitly opt-out of it

Note: The OLD behavior of a policy is deprecated, and may be removed in the future.

See also qt_standard_project_setup.

© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.