Spec-Zone.ru › CMake 3.7

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 вместе в 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.7/prop_tgt/AUTOMOC.html

Spec-Zone.ru

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