Условия QMake не работают


Я создал проект, в котором я хотел бы иметь различные исходные файлы, добавленные в мой проект для разных платформ. Для этого я использовал conditions:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = untitled16
TEMPLATE = app

MY_WIN_SOURCES = 
        file1.cpp 
        file2.cpp

MY_WIN_HEADERS = 
        file1.h 
        file2.h


MY_LINUX_SOURCES = 
        file1.cpp 
        file3.cpp

MY_LINUX_HEADERS = 
        file1.h 
        file3.h

FORMS    += mainwindow.ui

win32 {
    SOURCES = $$MY_WIN_SOURCES
    HEADERS = $$MY_WIN_HEADERS
    message("Windows...")
} else {
    SOURCES = $$MY_LINUX_SOURCES
    HEADERS = $$MY_LINUX_HEADERS
    message("Not Windows...")
}

Но когда я сохраняю файл *.pro, на Windows дерево проекта выглядит следующим образом:

Введите описание изображения здесь

Что неправильно, потому что в Windows у меня не должно быть file3.h и file3.cpp файлов:

Также file3.h и file3.cpp также компилируются и не должны компилироваться. Также единственное сообщение, которое появляется после сохранения файла *.pro is Windows...

Может ли кто-нибудь сказать мне, что я делаю не так?
1 2

1 ответ:

Это фактически функция QtCreator. Он показывает вам все включенные файлы, независимо от условий, но он должен правильно компилироваться.

Вы можете прочитать список разработчиков для получения дополнительной информации: http://lists.qt-project.org/pipermail/qt-creator/2012-March/000419.html

Как я понял из предыдущих обсуждений, это сделано намеренно. Теория заключается в том, что вы заинтересованы в изменении исходных файлов в ваш проект независимо от конфигурации сборки вы выбрали в как только.

/ s / Adam