【发布时间】:2017-06-01 22:36:26
【问题描述】:
我的 libui 项目必须在 OS X 10.8 和更高版本上编译并以 OS X 10.8 和更高版本为目标,所以我有
#define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_8
#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_8
在 Cocoa 代码的共享头文件中。到目前为止,这已经奏效;我没有看到关于 10.9 后弃用的功能。但是,昨晚升级到 10.12 和 Xcode 8 后,我突然看到一大堆弃用警告,例如
/Users/pietro/src/github.com/andlabs/libui/darwin/entry.m:181:28: warning:
'NSRegularControlSize' is deprecated: first deprecated in macOS 10.12
[-Wdeprecated-declarations]
uiDarwinSetControlFont(t, NSRegularControlSize);
^~~~~~~~~~~~~~~~~~~~
NSControlSizeRegular
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSCell.h:102:28: note:
'NSRegularControlSize' has been explicitly marked deprecated here
static const NSControlSize NSRegularControlSize API_DEPRECATED_WITH_REPL...
^
好像我提供的宏被忽略了。我试图弄清楚发生了什么,但我得到的只是混合信号:Apple 开发人员网站上的一些消息来源告诉我它真的是 __MAC_OS_X_VERSION_MIN_REQUIRED (并使用数字而不是版本本身的符号常量),而其他人告诉我我是的。一些消息来源似乎暗示这些值是由编译器设置决定的?我也说不出Availability.h想要什么。
值得一提的是,这个项目使用 CMake 构建,并没有直接使用 Xcode 项目。
那么我做错了什么?谢谢。
【问题讨论】:
-
您是否包括 AvailabilityMacros.h ? opensource.apple.com/source/xnu/xnu-3789.1.32/EXTERNAL_HEADERS/…
-
不是自动包含在
<Cocoa/Cocoa.h>中吗? -
您的部署目标是否在构建设置中设置为
-
@Wevah 是的,它是 10.8,用
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.8")完成。 -
哦,对了,您正在使用 CMake 进行构建。我破坏了那条线。
标签: objective-c macos cocoa