Spec-Zone.ru › CMake 3.9

AUTOMOC

Должен ли целевой объект обрабатываться с помощью automoc (для проектов Qt)?

AUTOMOC — это булево значение, определяющее, будет ли CMake автоматически обрабатывать препроцессор Qt moc , т. е. без необходимости использования макроса QT4_WRAP_CPP() или QT5_WRAP_CPP(). В настоящее время поддерживаются Qt4 и Qt5.

Когда эта свойство установлено ON, CMake будет сканировать заголовочные и исходные файлы во время сборки и вызывать moc соответственно.

  • Если обнаружено утверждение #include , такое как #include "moc_<basename>.cpp", то макросы Q_OBJECT или Q_GADGET ожидаются в пустой строке заголовочного файла <basename>.h(xx). moc выполняется над заголовочным файлом для генерации moc_<basename>.cpp в директории <AUTOGEN_BUILD_DIR>/include, которая автоматически добавляется в директивы включения целевого объекта INCLUDE_DIRECTORIES. Это позволяет компилятору находить включённый файл moc_<basename>.cpp независимо от расположения исходного файла.
    • См. AUTOGEN_BUILD_DIR.
  • Если обнаружено утверждение #include , такое как #include "<basename>.moc", то макросы Q_OBJECT или Q_GADGET ожидаются в текущем исходном файле, и moc выполняется над самим исходным файлом.
  • Заголовочные файлы, которые не включены с помощью утверждения #include "moc_<basename>.cpp" , тем не менее, сканируются на наличие макросов Q_OBJECT или Q_GADGET. Полученные файлы moc_<basename>.cpp генерируются в пользовательских каталогах и автоматически включаются в сгенерированный файл <AUTOGEN_BUILD_DIR>/mocs_compilation.cpp, который компилируется как часть целевого объекта.
    • Пользовательские директории с именами, основанными на контрольных суммах, помогают избежать коллизий имён для файлов moc с одинаковым <basename>.
    • См. AUTOGEN_BUILD_DIR.
  • Кроме того, заголовочные файлы с тем же базовым именем, что и исходный файл (например, <basename>.h) или _p, добавленное к базовому имени (например, <basename>_p.h), анализируются на наличие макросов Q_OBJECT или Q_GADGET. Если они найдены, moc также выполняется над этими файлами.
  • AUTOMOC всегда проверяет несколько альтернативных расширений заголовочных файлов, таких как hpp, hxx, и т. д., при поиске заголовочных файлов.
  • AUTOMOC ищет макрос Q_PLUGIN_METADATA и повторно выполняет moc, когда файл, указанный аргументом FILE макроса, изменяется.

Это свойство инициализируется значением переменной CMAKE_AUTOMOC, если она установлена при создании целевого объекта.

Дополнительные параметры командной строки для moc можно установить через свойство AUTOMOC_MOC_OPTIONS.

Включив переменную CMAKE_AUTOMOC_RELAXED_MODE, можно смягчить правила поиска файлов, которые будут обработаны moc. Более подробную информацию см. в документации по этой переменной.

Глобальное свойство AUTOGEN_TARGETS_FOLDER может использоваться для группировки целевых объектов automoc вместе в IDE, например, в MSVS.

Глобальное свойство AUTOGEN_SOURCE_GROUP может использоваться для группировки файлов, сгенерированных с помощью AUTOMOC, вместе в IDE, например, в MSVS.

Дополнительные имена зависимостей файлов moc могут быть извлечены из исходного кода с помощью AUTOMOC_DEPEND_FILTERS.

Исходные файлы C++ можно исключить из обработки AUTOMOC, включив SKIP_AUTOMOC или более широкое SKIP_AUTOGEN.

Дополнительную информацию об использовании CMake с Qt см. в руководстве cmake-qt(7).

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.9/prop_tgt/AUTOMOC.html

Spec-Zone.ru

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