为什么Qt .pro文件无法根据不同平台添加源?

时间:2019-01-18 06:32:23

标签: qt qt-creator

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

unix {
SOURCES += a.cpp
}

win32 {
SOURCES += b.cpp
}

但是当我在Windows中时,qt​​creator中包含了a.cpp和b.cpp,我看起来有些解释与我的相同,请参见https://doc.qt.io/qt-5/qmake-language.html,我不知道哪里出了错?什么是正确的配置?我的Qt版本是5.12.0

2 个答案:

答案 0 :(得分: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()
{
    //...
}

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

答案 1 :(得分:0)

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