Spec-Zone.ru › CMake 3.6

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API