【发布时间】:2022-08-09 04:54:21
【问题描述】:
我正在移植一个支持从 qmake 到 cmake 的多个平台的遗留 Qt 项目,并且源代码处理平台特定的代码隐藏在预处理器宏之后,例如 #if defined(Q_OS_WIN) 和 #if defined(Q_OS_MAC)。
但是,我的 CMake 项目似乎没有定义 Q_OS_WIN 或 Q_OS_MAC,从而导致这些平台检查失败。
有没有人知道这些丢失的宏背后可能是什么?另外,Qt 如何设置这些定义?
-
这些宏在
QtGlobal中定义,与cmake 或qmake 无关。 Here is howQ_OS_WIN已定义。 -
也没有名为
#is的预处理器宏 -
@chehrlic 你是对的,我的意思是
#if而不是#is。我会更新问题。 -
@ixSci 感谢您指出如何定义诸如
Q_OS_WIN之类的宏。似乎一个可能的根本原因是项目中没有设置WIN32。