Заставляя moc пропускать файлы / папки во время сборки

Это известная ошибка, которая вызывает moc над макросами, используемыми в libstdC++, как описано здесь: http://lists.kde.org/?l=necessitas-devel&m=132317657926916&q=raw

Я пытаюсь скомпилировать проект, который использует gcc 4.6.3 и застрял, потому что moc работает над макросами.

Один из способов решения этой проблемы - включить директивы, указанные в этой ссылке:

http://doc.qt.io/qt-4.8/moc.html

но это отнимает много времени и не очень чистый способ, так как каждый файл должен иметь эти директивы.

Я хотел бы знать, можно ли настроить qmake таким образом, чтобы moc пропускал определенные каталоги / файлы?

отредактировано: опечатки

1 ответ

Согласно Qt qmake docs moc будет запускаться для файлов, которые добавляются в HEADERS переменная (акцент мой):

qmake сгенерирует информацию о зависимостях (если в командной строке не указано -nodepend) для указанных заголовков. qmake также автоматически определит, требуется ли moc классам в этих заголовках, и добавит соответствующие зависимости и файлы в проект для генерации и связывания файлов moc.

Поэтому, если вы не хотите, чтобы moc запускался для определенных файлов, не добавляйте их в HEADERS в вашем.pro файле. Однако для некоторых платформ это может привести к тому, что заголовки не будут найдены при компиляции соответствующих файлов.cpp. Чтобы это исправить, добавьте INCLUDEPATH для папок, содержащих такие заголовки - moc не будет работать для заголовков, которые находятся внутри INCLUDEPATH,

Другие вопросы по тегам