QMake条件不起作用

时间:2015-05-06 11:50:25

标签: c++ qt qt-creator 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上的项目树看起来像这样:

enter image description here

这是错误的,因为在Windows上我不应该有file3.hfile3.cpp个文件:

此外,file3.hfile3.cpp也已编译,不应编译。此外,保存*.pro文件后显示的唯一消息是Windows...

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:3)

这实际上是QtCreator的功能。它会显示所有包含的文件,无论条件如何,但它应该正确编译。

您可以阅读开发人员列表以获取更多信息:http://lists.qt-project.org/pipermail/qt-creator/2012-March/000419.html

  

我之前的讨论中的理解是,这是故意的。   理论上,你有兴趣修改源文件   您的项目,无论您选择的构建配置如何   那一刻。

     

/ s / Adam