为什么Qt .pro 文件根据不同平台添加源不起作用?

Why Qt .pro files add source according to different platform doesn't work?

我想为我的项目配置一个Qt.pro文件,我这样写我的pro文件:

unix {
SOURCES += a.cpp
}

win32 {
SOURCES += b.cpp
}

但是 a.cpp 和 b.cpp 都包含在 qtcreator 中,当我在 Windows 时,我看起来有些解释和我的一样,见 https://doc.qt.io/qt-5/qmake-language.html,我不知道'不知道哪里错了?配置什么合适?我的 Qt 版本是 5.12.0

我不知道为什么你的代码不起作用,但建议你在同一个 .cpp/.h 文件中使用 macroses 来检查当前平台,因为你可能具有这些平台的通用功能。

例如:

#ifdef Q_OS_WIN32 // or Q_OS_WIN64. the code/function for Windows
void fun() 
{
   commonFunction();
}
#endif

#ifdef Q_OS_LINUX // or Q_OS_UNIX ...
void fun()
{
   commonFunction();
}
#endif

void commonFunction()
{
    //...
}

void fun()
{
    #ifdef Q_OS_WIN64
       // code for windows
    #endif
    #ifdef Q_OS_LINUX
       // code for linux
    #endif
    // a common code...
}

经过我的测试,这个方法是正确的。虽然qtcreator中会同时显示a.cpp和b.cpp,但是qmake生成的MakeFile不会包含其他平台