AUTOMOCΒΆ
Should the target be processed with automoc (for Qt projects).
AUTOMOC is a boolean specifying whether CMake will handle the Qt moc
preprocessor automatically, i.e. without having to use the
QT4_WRAP_CPP() or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are
supported.
When this property is set ON, CMake will scan the header and
source files at build time and invoke moc accordingly.
- If an
#includestatement like#include "moc_<basename>.cpp"is found, theQ_OBJECTorQ_GADGETmacros are expected in an otherwise empty line of the<basename>.h(xx)header file.mocis run on the header file to generatemoc_<basename>.cppin the<AUTOGEN_BUILD_DIR>/includedirectory which is automatically added to the target’sINCLUDE_DIRECTORIES. This allows the compiler to find the includedmoc_<basename>.cppfile regardless of the location the original source.- See
AUTOGEN_BUILD_DIR.
- See
- If an
#includestatement like#include "<basename>.moc"is found, thenQ_OBJECTorQ_GADGETmacros are expected in the current source file andmocis run on the source file itself. - Header files that are not included by an
#include "moc_<basename>.cpp"statement are nonetheless scanned forQ_OBJECTorQ_GADGETmacros. The resultingmoc_<basename>.cppfiles are generated in custom directories and automatically included in a generated<AUTOGEN_BUILD_DIR>/mocs_compilation.cppfile, which is compiled as part of the target.- The custom directories with checksum
based names help to avoid name collisions for moc files with the same
<basename>. - See
AUTOGEN_BUILD_DIR.
- The custom directories with checksum
based names help to avoid name collisions for moc files with the same
- Additionally, header files with the same base name as a source file,
(like
<basename>.h) or_pappended to the base name (like<basename>_p.h), are parsed forQ_OBJECTorQ_GADGETmacros, and if found,mocis also executed on those files. AUTOMOCalways checks multiple header alternative extensions, such ashpp,hxx, etc. when searching for headers.AUTOMOClooks for theQ_PLUGIN_METADATAmacro and reruns themocwhen the file addressed by theFILEargument of the macro changes.
This property is initialized by the value of the CMAKE_AUTOMOC
variable if it is set when a target is created.
Additional command line options for moc can be set via the
AUTOMOC_MOC_OPTIONS property.
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.
The global property AUTOGEN_SOURCE_GROUP can be used to group
files generated by AUTOMOC together in an IDE, e.g. in MSVS.
Additional moc dependency file names can be extracted from source code
by using AUTOMOC_DEPEND_FILTERS.
Source C++ files can be excluded from AUTOMOC processing by
enabling SKIP_AUTOMOC or the broader SKIP_AUTOGEN.
See the cmake-qt(7) manual for more information on using CMake
with Qt.