AUTOMOC
Необходимо ли обрабатывать целевой объект с помощью automoc (для проектов Qt).
AUTOMOC — это булево значение, определяющее, будет ли CMake обрабатывать Qt moc препроцессор автоматически, т. е. без необходимости использования макроса QT4_WRAP_CPP() или QT5_WRAP_CPP(). В настоящее время поддерживаются Qt4 и Qt5.
Когда эта свойство установлено ON, CMake будет сканировать исходные файлы во время сборки и вызывать moc соответственно.
- Если найдено
#includeутверждение, например#include "moc_foo.cpp", ожидается объявление классаQ_OBJECTв заголовке, иmocвыполняется для файла заголовка. Файлmoc_foo.cppбудет сгенерирован из заголовка исходного файла в директориюCMAKE_CURRENT_BINARY_DIR. Это позволяет компилятору найти включенныйmoc_foo.cppфайл независимо от расположения исходного файла. Однако, если это делают несколько исходных файлов в разных директориях, их сгенерированные файлы 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 вместе в среде разработки, например, в 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.6/prop_tgt/AUTOMOC.html