| GENERATED |
| --------- |
| |
| Is this source file generated as part of the build or CMake process. |
| |
| .. versionchanged:: 3.20 |
| The GENERATED source file property is now visible in all directories. |
| |
| Tells the internal CMake engine that a source file is generated by an outside |
| process such as another build step, or the execution of CMake itself. |
| This information is then used to exempt the file from any existence or |
| validity checks. |
| |
| Any file that is |
| |
| - created by the execution of commands such as |
| :command:`add_custom_command` and :command:`file(GENERATE)` |
| - listed as one of the ``BYPRODUCTS`` of an :command:`add_custom_command` |
| or :command:`add_custom_target` command, or |
| - created by a CMake ``AUTOGEN`` operation such as :prop_tgt:`AUTOMOC`, |
| :prop_tgt:`AUTORCC`, or :prop_tgt:`AUTOUIC` |
| |
| will be marked with the ``GENERATED`` property. |
| |
| When a generated file created as the ``OUTPUT`` of an |
| :command:`add_custom_command` command is explicitly listed as a source file |
| for any target in the same directory scope (which usually means the same |
| ``CMakeLists.txt`` file), CMake will automatically create a dependency to |
| make sure the file is generated before building that target. |
| |
| The :ref:`Makefile Generators` will remove ``GENERATED`` files during |
| ``make clean``. |
| |
| Generated sources may be hidden in some IDE tools, while in others they might |
| be shown. For the special case of sources generated by CMake's :prop_tgt:`AUTOMOC` |
| or :prop_tgt:`AUTORCC` functionality, the :prop_gbl:`AUTOGEN_SOURCE_GROUP`, |
| :prop_gbl:`AUTOMOC_SOURCE_GROUP` and :prop_gbl:`AUTORCC_SOURCE_GROUP` target |
| properties may influence where the generated sources are grouped in the project's |
| file lists. |
| |
| .. note:: |
| |
| Starting with CMake 3.20 the ``GENERATED`` source file property can be set |
| and retrieved from any directory scope. It is an all-or-nothing property. |
| It also can no longer be removed or unset if it was set to ``TRUE``. Policy |
| :policy:`CMP0118` was introduced to allow supporting the ``OLD`` behavior |
| for some time. |