# AUTOUIC

Should the target be processed with auto-uic (for Qt projects).

`AUTOUIC` is a boolean specifying whether CMake will handle the Qt `uic` code generator automatically, i.e. without having to use commands like `QT4_WRAP_UI()`, `QT5_WRAP_UI()`, etc. Currently, Qt versions 4 to 6 are supported.

This property is initialized by the value of the `CMAKE_AUTOUIC` variable if it is set when a target is created.

When this property is `ON`, CMake will scan the header and source files at build time and invoke `uic` accordingly.

## Header and source file processing

At build time, CMake scans each header and source file from the target's sources for include statements of the form

    #include "ui_<ui_base>.h"

Once such an include statement is found in a file, CMake searches for the `uic` input file `<ui_base>.ui`

- in the vicinity of the file and

- in the `AUTOUIC_SEARCH_PATHS` of the target.

If the `<ui_base>.ui` file was found, `uic` is called on it to generate `ui_<ui_base>.h` in the directory

- `<AUTOGEN_BUILD_DIR>/include` for single configuration generators or in

- `<AUTOGEN_BUILD_DIR>/include_<CONFIG>` for `multi configuration` generators.

Where `<AUTOGEN_BUILD_DIR>` is the value of the target property `AUTOGEN_BUILD_DIR`.

The include directory is automatically added to the target's `INCLUDE_DIRECTORIES`.

## Modifiers

`AUTOUIC_EXECUTABLE`: The `uic` executable will be detected automatically, but can be forced to a certain binary using this target property.

`AUTOUIC_OPTIONS`: Additional command line options for `uic` can be set via this target property. The corresponding `AUTOUIC_OPTIONS` source file property can be used to specify options to be applied only to a specific `<base_name>.ui` file.

`SKIP_AUTOUIC`: Source files can be excluded from `AUTOUIC` processing by setting this source file property.

`SKIP_AUTOGEN`: Source files can be excluded from `AUTOMOC`, `AUTOUIC` and `AUTORCC` processing by setting this source file property.

`AUTOGEN_TARGETS_FOLDER`: This global property can be used to group `AUTOMOC`, `AUTOUIC` and `AUTORCC` targets together in an IDE, e.g. in MSVS.

`CMAKE_GLOBAL_AUTOGEN_TARGET`: A global `autogen` target, that depends on all `AUTOMOC` or `AUTOUIC` generated `<ORIGIN>_autogen` targets in the project, will be generated when this variable is `ON`.

`AUTOGEN_PARALLEL`: This target property controls the number of `moc` or `uic` processes to start in parallel during builds.

See the `cmake-qt(7)` manual for more information on using CMake with Qt.