为什么Qt.pro文件会根据不同的平台添加源代码;不行?
我想为我的项目配置一个Qt.pro文件,我编写的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_
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...
}