AUTOMOC
Нужно ли обрабатывать целевой объект с помощью automoc (для проектов Qt)?
AUTOMOC — это булево значение, определяющее, будет ли CMake автоматически обрабатывать Qt moc препроцессор, т. е. без необходимости использовать макрос QT4_WRAP_CPP() или QT5_WRAP_CPP(). В настоящее время поддерживаются Qt4 и Qt5. Когда эта свойство установлено ON, CMake будет сканировать исходные файлы во время сборки и вызывать moc соответствующим образом. Если найдено #include оператор, например #include "moc_foo.cpp", то ожидается объявление класса moc в заголовочном файле, и moc будет выполнено для заголовочного файла. Если найден #include оператор, например #include "foo.moc", то ожидается Q_OBJECT в текущем исходном файле, и moc будет выполнено для самого файла. Кроме того, заголовочные файлы с тем же базовым именем (например, foo.h) или _p, добавленное к базовому имени (например, foo_p.h) будут проанализированы на наличие Q_OBJECT макросов, и если они будут найдены, moc также будет выполнено для этих файлов. AUTOMOC проверяет несколько альтернативных расширений заголовочных файлов, таких как hpp, hxx и т. д., при поиске заголовочных файлов. Результирующие файлы moc, которые не включены, как показано выше, ни в один из исходных файлов, включаются в сгенерированный <targetname>_automoc.cpp файл, который компилируется как часть целевого объекта. Это свойство инициализируется значением переменной CMAKE_AUTOMOC, если она установлена при создании целевого объекта.
Дополнительные параметры командной строки для moc могут быть заданы через свойство AUTOMOC_MOC_OPTIONS.
Включив переменную CMAKE_AUTOMOC_RELAXED_MODE, можно смягчить правила поиска файлов, которые будут обработаны moc. Подробнее см. документацию по этой переменной.
Глобальное свойство AUTOGEN_TARGETS_FOLDER может использоваться для группировки целевых объектов automoc вместе в IDE, например, в MSVS.
См. руководство cmake-qt(7) для получения дополнительной информации об использовании CMake с Qt.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/prop_tgt/AUTOMOC.html