gpt4 book ai didi

c++ - Qt中如何基于平台排除某些文件

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:18 27 4
gpt4 key购买 nike

我有一个 Qt 应用程序,我想在 Linux 上运行,但是它使用的 API 只能在 Windows 上使用。可能有 2 或 3 个类使用 API,我试图不将它们与程序的其余部分紧密结合。我显然可以到处使用大量的 #ifdef win32,但我相信在 .pro 文件中应该有更多的 Qt 方式来完成它。

理想情况下,我希望 qmake 检测系统并查找 API(如果它是 win32)。然后,如果它找不到它或它在不同的平台上,则从 API 中排除库和所有包含 header 的类。

这是我的意思的一个例子:

我现在有In.pro文件

SOURCES += main.cpp  \
mainwindow.cpp \
win32apiwrapperclass.cpp \
...

LIBS += "a/path/to/win32/only/lib -lwin32only

INCLUDEPATH += "a/path/to/win32/only/includes"
DEPENDPATH += "a/path/to/win32/only/includes"

同样在 MainWindow.h 中我有类似的东西:

private:
Win32OnlyWrapperClass* win32owc;

然后在cpp文件中用了几次win32owc。所以我也希望所有这些都被排除在其他平台上。希望它有意义。

谢谢!

最佳答案

在 .pro 文件中你可以这样做:

win32:LIBS += "a/path/to/win32/only/lib -lwin32only

win32:INCLUDEPATH += "a/path/to/win32/only/includes"
win32:DEPENDPATH += "a/path/to/win32/only/includes"

win32 {    
LIBS += "a/path/to/win32/only/lib -lwin32only

INCLUDEPATH += "a/path/to/win32/only/includes"
DEPENDPATH += "a/path/to/win32/only/includes"
}

https://doc.qt.io/archives/qt-4.8/qmake-advanced-usage.html#scopes-and-conditions

关于c++ - Qt中如何基于平台排除某些文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13979536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com