以防万一您使用 Qt,有一组非常好的定义,Q_OS_*,可以引导您使用您正在编译的操作系统:
Q_OS_AIX
Q_OS_BSD4
Q_OS_BSDI
Q_OS_CYGWIN
Q_OS_DARWIN
Q_OS_DGUX
Q_OS_DYNIX
Q_OS_FREEBSD
Q_OS_HPUX
Q_OS_HURD
Q_OS_IRIX
Q_OS_LINUX
Q_OS_LYNX
Q_OS_MAC
Q_OS_MSDOS
Q_OS_NETBSD
Q_OS_OS2
Q_OS_OPENBSD
Q_OS_OS2EMX
Q_OS_OSF
...
它们在QtGlobal中定义。甚至还有一些定义可以帮助您找出使用的编译器 Q_CC_* 或目标 Windowing System Q_WS_*。
但是,如果您不使用 Qt 并且想要使用通用方法,则很可能不得不回退到Autotools包或CMake。
确定 Linux 发行版非常棘手,但并不难。您首先必须弄清楚您关心哪些发行版,然后对您选择的发行版进行各种特定于发行版的文件/配置检查,就像在这个示例中一样,因为您不能真正支持所有可用的 Linux 发行版出。:-)
至于 Mac 方面,我会让 Mac 专家回答,但应该不会那么难,因为至少多样性问题是不可能的。