AUTOMOC.rst 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. AUTOMOC
  2. -------
  3. Should the target be processed with automoc (for Qt projects).
  4. AUTOMOC is a boolean specifying whether CMake will handle the Qt ``moc``
  5. preprocessor automatically, i.e. without having to use the
  6. :module:`QT4_WRAP_CPP() <FindQt4>` or QT5_WRAP_CPP() macro. Currently Qt4 and Qt5 are
  7. supported. When this property is set ``ON``, CMake will scan the
  8. source files at build time and invoke moc accordingly. If an ``#include``
  9. statement like ``#include "moc_foo.cpp"`` is found, the ``Q_OBJECT`` class
  10. declaration is expected in the header, and ``moc`` is run on the header
  11. file. If an ``#include`` statement like ``#include "foo.moc"`` is found, then
  12. a ``Q_OBJECT`` is expected in the current source file and ``moc`` is run on
  13. the file itself. Additionally, header files with the same base name (like
  14. ``foo.h``) or ``_p`` appended to the base name (like ``foo_p.h``) are parsed
  15. for ``Q_OBJECT`` macros, and if found, ``moc`` is also executed on those files.
  16. ``AUTOMOC`` checks multiple header alternative extensions, such as
  17. ``hpp``, ``hxx`` etc when searching for headers.
  18. The resulting moc files, which are not included as shown above in any
  19. of the source files are included in a generated
  20. ``<targetname>_automoc.cpp`` file, which is compiled as part of the
  21. target. This property is initialized by the value of the
  22. :variable:`CMAKE_AUTOMOC` variable if it is set when a target is created.
  23. Additional command line options for moc can be set via the
  24. :prop_tgt:`AUTOMOC_MOC_OPTIONS` property.
  25. By enabling the :variable:`CMAKE_AUTOMOC_RELAXED_MODE` variable the
  26. rules for searching the files which will be processed by moc can be relaxed.
  27. See the documentation for this variable for more details.
  28. The global property :prop_gbl:`AUTOGEN_TARGETS_FOLDER` can be used to group the
  29. automoc targets together in an IDE, e.g. in MSVS.
  30. See the :manual:`cmake-qt(7)` manual for more information on using CMake
  31. with Qt.