Should the target be processed with automoc (for Qt projects).
AUTOMOC is a boolean specifying whether CMake will handle the Qt
preprocessor automatically, i.e. without having to use the
QT4_WRAP_CPP() or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are
When this property is set
ON, CMake will scan the
source files at build time and invoke moc accordingly.
- If an
#include "moc_foo.cpp"is found, the
Q_OBJECTclass declaration is expected in the header, and
mocis run on the header file. A
moc_foo.cppfile will be generated from the source’s header into the
CMAKE_CURRENT_BINARY_DIRdirectory. This allows the compiler to find the included
moc_foo.cppfile regardless of the location the original source. However, if multiple source files in different directories do this then their generated moc files would collide. In this case a diagnostic will be issued.
- If an
#include "foo.moc"is found, then a
Q_OBJECTis expected in the current source file and
mocis run on the file itself. Additionally, header files with the same base name (like
_pappended to the base name (like
foo_p.h) are parsed for
Q_OBJECTmacros, and if found,
mocis also executed on those files.
AUTOMOCchecks multiple header alternative extensions, such as
hxxetc when searching for headers. The resulting moc files, which are not included as shown above in any of the source files are included in a generated
<targetname>_automoc.cppfile, which is compiled as part of the target.
This property is initialized by the value of the
variable if it is set when a target is created.
Additional command line options for moc can be set via the
By enabling the
CMAKE_AUTOMOC_RELAXED_MODE variable the
rules for searching the files which will be processed by moc can be relaxed.
See the documentation for this variable for more details.
The global property
AUTOGEN_TARGETS_FOLDER can be used to group the
automoc targets together in an IDE, e.g. in MSVS.
cmake-qt(7) manual for more information on using CMake