在 macOS Sierra 上使用 clang 编译 Objective-C
Compile Objective-C with clang on macOS Sierra
我想知道如何在 macOS Sierra 上编译这段代码。
#import <Foundation/Foundation.h>
int main() {
NSLog(@"Hello World");
return 0;
}
在 El Capitan 上,我可以用这个命令编译。
clang -x objective-c -framework Foundation main.m
但是,当我在 Sierra 上尝试该命令时,我看到了这些错误。
In file included from main.m:1:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSArray.h:5:
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:44:12: error: unknown property attribute 'class'
@property (class, readonly) BOOL supportsSecureCoding;
这是我正在使用的 clang
版本。
$ clang -v
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
我安装了 Xcode 版本 7.3.1 (7D1014) 和 Xcode 版本 8.0 beta 4 (8S188o)。我拥有的 Sierra 版本是 10.12 beta (16A254g)。
注意:我想在 clang
的终端中编译它,而不是在 Xcode.
中
Objective-C 在新版本的 Clang 和 Xcode 中获得了对 class 属性的支持。在这篇文章中,您可能会找到一些有用的信息:Objective-C Class Properties.
要解决此问题,您只需安装 Xcode 8.
UPD
忘了说:
安装后确保您已将命令行工具切换到最近的 Xcode:
$ clang --version
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer
$ sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer/
$ xcode-select -print-path
/Applications/Xcode-beta.app/Contents/Developer
$ clang --version
Apple LLVM version 8.0.0 (clang-800.0.33.1)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
确保您选择了 Xcode 8 版本的命令行工具。
我想知道如何在 macOS Sierra 上编译这段代码。
#import <Foundation/Foundation.h>
int main() {
NSLog(@"Hello World");
return 0;
}
在 El Capitan 上,我可以用这个命令编译。
clang -x objective-c -framework Foundation main.m
但是,当我在 Sierra 上尝试该命令时,我看到了这些错误。
In file included from main.m:1:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:10:
In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSArray.h:5:
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:44:12: error: unknown property attribute 'class'
@property (class, readonly) BOOL supportsSecureCoding;
这是我正在使用的 clang
版本。
$ clang -v
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
我安装了 Xcode 版本 7.3.1 (7D1014) 和 Xcode 版本 8.0 beta 4 (8S188o)。我拥有的 Sierra 版本是 10.12 beta (16A254g)。
注意:我想在 clang
的终端中编译它,而不是在 Xcode.
Objective-C 在新版本的 Clang 和 Xcode 中获得了对 class 属性的支持。在这篇文章中,您可能会找到一些有用的信息:Objective-C Class Properties.
要解决此问题,您只需安装 Xcode 8.
UPD
忘了说:
安装后确保您已将命令行工具切换到最近的 Xcode:
$ clang --version
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer
$ sudo xcode-select -switch /Applications/Xcode-beta.app/Contents/Developer/
$ xcode-select -print-path
/Applications/Xcode-beta.app/Contents/Developer
$ clang --version
Apple LLVM version 8.0.0 (clang-800.0.33.1)
Target: x86_64-apple-darwin15.5.0
Thread model: posix
InstalledDir: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
确保您选择了 Xcode 8 版本的命令行工具。