我创建了一个项目,其中希望将不同的源文件添加到针对不同平台的项目中。为此,我使用了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.hfile3.cpp文件:
file3.hfile3.cpp也会被编译,不应编译。另外,保存*.pro文件后出现的唯一消息是Windows...
谁能告诉我我在做什么错?

最佳答案

这实际上是QtCreator的功能。它会向您显示所有包含的文件,而不管条件如何,但是它应该可以正确编译。

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

关于c++ - QMake条件不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30075868/

10-11 16:52