为什么Qt.pro文件会根据不同的平台添加源代码;不行?

为什么Qt.pro文件会根据不同的平台添加源代码;不行?,qt,qt-creator,Qt,Qt Creator,我想为我的项目配置一个Qt.pro文件,我编写的pro文件如下: unix { SOURCES += a.cpp } win32 { SOURCES += b.cpp } 但是a.cpp和b.cpp都包含在qtcreator中,当我在Windows中时,我看一些解释和我的一样,看,我不知道哪里出了问题?什么是正确的配置?我的Qt版本是5.12.0我不知道你的代码为什么不起作用,但建议你在同一个.cpp/.h文件中使用宏来检查当前平台,因为你可能有这些平台的通用功能 例如: #ifdef Q_

我想为我的项目配置一个Qt.pro文件,我编写的pro文件如下:

unix {
SOURCES += a.cpp
}

win32 {
SOURCES += b.cpp
}

但是a.cpp和b.cpp都包含在qtcreator中,当我在Windows中时,我看一些解释和我的一样,看,我不知道哪里出了问题?什么是正确的配置?我的Qt版本是5.12.0

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

例如:

#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()
{
    //...
}


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

什么叫“都包含在qtcreator中”?编译项目时,是否同时使用这两个文件?@MrEricSir我的意思是在windows上工作时,我想使用b.cpp作为源代码,当我在linux上工作时使用a.cpp,但现在它们都添加到了源代码中,无论我使用什么系统,这个方法都是由qmake手册提供的,所以我不知道哪里出错了?@eyllaesc不,我想在不同的平台上使用不同的文件,因为我配置了a.cpp,你问为什么a.cpp和b.cpp在你的IDE中可见?我认为它有时是有用的。假设您决定做重构,您可以在所有平台上看到实现文件,并将重复代码移到基类。如果想重构代码,我将考虑使用此方法,但现在我只需要一种方法将项目配置为Qt.Pro。
void fun()
{
    #ifdef Q_OS_WIN64
       // code for windows
    #endif
    #ifdef Q_OS_LINUX
       // code for linux
    #endif
    // a common code...
}