Spec-Zone.ru › CMake 3.8

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>/<TARGETNAME>_autogen/include, который автоматически добавляется в INCLUDE_DIRECTORIES целевого объекта. Это позволяет компилятору найти включенный файл moc_foo.cpp независимо от расположения исходного файла. Однако, если несколько исходных файлов в разных каталогах выполняют это действие, их сгенерированные файлы moc могут конфликтовать. В этом случае будет выдано диагностическое сообщение.
  • Если обнаружено утверждение #include, подобное #include "foo.moc", ожидается Q_OBJECT в текущем исходном файле, и для самого файла будет выполнено moc. Кроме того, файлы заголовков с тем же базовым именем (например, foo.h) или с добавленным к базовому имени _p (например, foo_p.h) анализируются на наличие макросов Q_OBJECT, и если они найдены, для этих файлов также выполняется moc. AUTOMOC проверяет несколько альтернативных расширений файлов заголовков, таких как hpp, hxx и т.д., при поиске заголовков. Результирующие файлы moc, которые не включены, как показано выше, ни в один из исходных файлов, включаются в сгенерированный файл moc_compilation.cpp, который компилируется как часть целевого объекта.

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

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

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

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

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

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

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

Spec-Zone.ru

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