为什么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不会包含其他平台
我想为我的项目配置一个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不会包含其他平台