在macOS 10.14中使用clang编译Objective-C?

在macOS 10.14中使用clang编译Objective-C?,objective-c,macos,clang,Objective C,Macos,Clang,macOS:10.14.5 XCode:10.2.1 叮当声:8.0.0 我能够使用XCode成功编译Obj-C,但在尝试从命令行编译时遇到了一个致命错误,Foundation.h。有没有办法解决这个问题 $ cat first_program.m #import <Foundation/Foundation.h&g

macOS:
10.14.5

XCode:
10.2.1

叮当声:
8.0.0

我能够使用XCode成功编译Obj-C,但在尝试从命令行编译时遇到了一个致命错误,
Foundation.h
。有没有办法解决这个问题

$ cat first_program.m                                                                                        
#import <Foundation/Foundation.h>

int main(int argc, const char *argv[]) {
  @autoreleasepool {
      NSLog(@"Hello, World!");
  }
  return 0;
}

$ clang -Wall -framework Foundation first_program.m
first_program.m:1:9: fatal error: 'Foundation/Foundation.h' file not found
#import <Foundation/Foundation.h>
        ^~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.

$ clang -v                                                                                                  
clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-apple-darwin18.6.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin
$cat first\u program.m
#进口
int main(int argc,const char*argv[]{
@自动释放池{
NSLog(@“你好,世界!”);
}
返回0;
}
$ Cangang-Wrr-框架基金会FrestSt.
first_program.m:1:9:致命错误:“找不到Foundation/Foundation.h”文件
#进口
^~~~~~~~~~~~~~~~~~~~~~~~~
生成1个错误。
$clang-v
clang版本8.0.0(标签/发行版\u 800/最终版)
目标:x86_64-apple-darwin18.6.0
线程模型:posix
InstalledDir:/usr/local/opt/llvm/bin

我怀疑,因为似乎无法找到使用的版本
clang
是非Apple标头。通过使用
xcrun--show sdk path
选项将
isysroot
添加到compile命令中,您可能可以告诉它在哪里查找
Foundation
框架:

clang -Wall -framework Foundation -isysroot `xcrun --show-sdk-path` first_program.m 

我怀疑,因为似乎无法找到所使用的
clang
版本是非Apple标题。通过使用
xcrun--show sdk path
选项将
isysroot
添加到compile命令中,您可能可以告诉它在哪里查找
Foundation
框架:

clang -Wall -framework Foundation -isysroot `xcrun --show-sdk-path` first_program.m 

我想你必须展示它的基础没有成功的尝试,尝试:<代码> /系统/库/框架< /代码>和你的例子中的路径。愚蠢的问题:如果找不到框架,那么如果您通过
-frameworkfoundation
,链接器不应该抛出错误吗?类似于
ld:frameworknotfoundfoundfoundfound
。这就是我在尝试
clang-framework blah
时看到的,您有没有将命令行工具属性指向您的Xcode版本?OMM安装的Dir在Xcode中。而且你的版本真的很奇怪。我在mac os 10.12上,远远落后于你,Xcode 9.2也落后于你,但我最喜欢的是苹果LLVM 9.0.0版,它就在你前面。所以你的叮当声对你现在所做的事情来说太老了。这让我觉得您根本忘了安装当前的命令行工具。转到开发人员站点并安装它们,然后进入Xcode位置pref窗格,确保它们指向您的Xcode。我想你必须展示它的基础没有成功的尝试,尝试:<代码> /系统/库/框架< /代码>和你的例子中的路径。愚蠢的问题:如果找不到框架,那么如果您通过
-frameworkfoundation
,链接器不应该抛出错误吗?类似于
ld:frameworknotfoundfoundfoundfound
。这就是我在尝试
clang-framework blah
时看到的,您有没有将命令行工具属性指向您的Xcode版本?OMM安装的Dir在Xcode中。而且你的版本真的很奇怪。我在mac os 10.12上,远远落后于你,Xcode 9.2也落后于你,但我最喜欢的是苹果LLVM 9.0.0版,它就在你前面。所以你的叮当声对你现在所做的事情来说太老了。这让我觉得您根本忘了安装当前的命令行工具。转到开发人员站点并安装它们,然后进入Xcode位置pref窗格,确保它们指向您的Xcode。