Почему файл Qt .pro выдает ошибку для платформы, даже если он не выбран или не упомянут?

В моем файле Qt .pro следующее выдает ошибку компиляции с ОС Windows:

!win32
{
  QMAKE_CXXFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers -Wimplicit-fallthrough=0
}

Согласно руководству по qmake, платформа Windows должна обходить вышеуказанный блок. Тем не менее, он выдает ошибку, так как выполняет проверку работоспособности даже для Windows, хотя это и не применимо.

Есть и другие подобные примеры.
Как исправить такие ошибки?

1 ответ

Решение

В этом случае проблема возникает из-за синтаксиса Qt QMake. По этой ссылке QMake Advanced Usage

Области действия состоят из условия, за которым следует открывающая скобка в той же строке, последовательность команд и определений и закрывающая скобка в новой строке. Открывающая скобка должна быть написана в той же строке, что и условие. Области могут быть объединены для включения более одного условия;

Синтаксис:

<condition> {
  0<command or definition>
...
}

.pro изменение файла:

!win32 {
QMAKE_CXXFLAGS += -Wno-unused-parameter -Wno-missing-field-initializers -Wimplicit-fallthrough=0
}  # compiles fine
Другие вопросы по тегам