如何确定mac SDK是否小于*

时间:2012-03-08 03:15:14

标签: c macos

我有一个针对10.5的最低平台的应用程序,它可以通过SDK 10.6或10.7进行编译。

但是,当使用旧版本的xcode和10.5 SDK进行编译时,编译失败并需要一些额外的#import(为什么我不确定,但确实如此)。当我导入OpenGL标头时,我收到一些关于某些类型未解决的错误。添加#import <CarbonCore/Endian.h>可以解决问题(缺少的符号所在的位置)。

除非绝对必要,否则我不想执行#import,特别是在使用10.6或10.7进行编译时不执行此操作。

我知道如何检查我是否使用优于给定版本的SDK,如下所示:

#if MAC_OS_X_VERSION_10_5 > MACS_VERSION_MIN_REQUIRED
// Mac > 10.5 code here
#endif

问题是测试反向条件已被证明是非平凡的,因为SDK的所有后续版本都具有早期版本中的所有定义。

我想找到相当于:

#if COMPILING_WITH_10_5_OR_EARLIER
blah
#endif

当然,必须有一种我忽视的简单方法

2 个答案:

答案 0 :(得分:6)

https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Using/using.html

#if __MAC_OS_X_VERSION_MAX_ALLOWED > 1050  // note use of 1050 instead of __MAC_10_5
#   include <security/pam_appl.h>
#else
#   include <pam/pam_appl.h>
#endif

答案 1 :(得分:1)

你可以写:

#ifndef MAC_OS_X_VERSION_10_6
#include <CarbonCore/Endian.h>
#endif

如果(且仅当)<CarbonCore/Endian.h>宏未定义,则包含MAC_OS_X_VERSION_10_6