Условия 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 ответ:
Это фактически функция QtCreator. Он показывает вам все включенные файлы, независимо от условий, но он должен правильно компилироваться.
Вы можете прочитать список разработчиков для получения дополнительной информации: http://lists.qt-project.org/pipermail/qt-creator/2012-March/000419.html
Как я понял из предыдущих обсуждений, это сделано намеренно. Теория заключается в том, что вы заинтересованы в изменении исходных файлов в ваш проект независимо от конфигурации сборки вы выбрали в как только.
/ s / Adam