C++ gcc如何在MacOSX(10.15)上搜索框架标题?

C++ gcc如何在MacOSX(10.15)上搜索框架标题?,c++,c,macos,gcc,C++,C,Macos,Gcc,通过gcc-v我知道gcc在以下路径中搜索: /usr/local/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.3/include /usr/include /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/i

通过
gcc-v
我知道gcc在以下路径中搜索:

/usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/11.0.3/include
 /usr/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
我写道:

#include <CoreFoundation/CoreFoundation.h>
int main() {
        return 0;
}

然后我使用
gcc-I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/
,因为我知道头的路径是
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/CoreServices.framework/Headers/CoreServices.h
。但它仍然不起作用。为什么?

gcc-v输出中的两行是关于特殊目录的提示,这些目录与include目录不同

/System/Library/Frameworks(框架目录)
/库/框架(框架目录)
Apple的gcc for Darwing架构具有特殊的扩展,用于从framworks查找包含文件。你可以阅读有关

特别是看看-Fdir选项。它允许指定除上面列出的之外的其他框架目录。此选项描述gcc如何在框架中查找头文件:

框架目录是包含框架的目录。框架是一个目录,其中包含
标题
和/或直接包含在
中的
私有标题
目录,以
.framework
结尾。框架名称是此目录的名称,不包括
.framework
。在这两个目录中的一个目录中可以找到与框架关联的标题,首先搜索
标题
。子框架是框架的
Frameworks
目录中的框架目录。子框架标题的包含只能出现在包含子框架的框架的标题中,或出现在同级子框架标题中。如果两个子框架出现在同一框架中,则它们是同级。子框架不应与框架同名;如果违反此规定,将发出警告。当前子框架不能有子框架;将来,该机制可能会扩展以支持这一点。标准框架可以在
/System/Library/frameworks
/Library/frameworks
中找到示例include类似于
#include
,其中
Framework
表示框架的名称和
标题。h
位于
PrivateHeaders
Headers
目录中。


gcc-v
输出中的两行是关于特殊目录的提示,这些目录与include目录不同

/System/Library/Frameworks(框架目录)
/库/框架(框架目录)
Apple的gcc for Darwing架构具有特殊的扩展,用于从framworks查找包含文件。你可以阅读有关

特别是看看-Fdir选项。它允许指定除上面列出的之外的其他框架目录。此选项描述gcc如何在框架中查找头文件:

框架目录是包含框架的目录。框架是一个目录,其中包含
标题
和/或直接包含在
中的
私有标题
目录,以
.framework
结尾。框架名称是此目录的名称,不包括
.framework
。在这两个目录中的一个目录中可以找到与框架关联的标题,首先搜索
标题
。子框架是框架的
Frameworks
目录中的框架目录。子框架标题的包含只能出现在包含子框架的框架的标题中,或出现在同级子框架标题中。如果两个子框架出现在同一框架中,则它们是同级。子框架不应与框架同名;如果违反此规定,将发出警告。当前子框架不能有子框架;将来,该机制可能会扩展以支持这一点。标准框架可以在
/System/Library/frameworks
/Library/frameworks
中找到示例include类似于
#include
,其中
Framework
表示框架的名称和
标题。h
位于
PrivateHeaders
Headers
目录中。

#include <CoreFoundation.framework/Headers/CoreFoundation.h>
int main() {
        return 0;
}
did not find header 'CoreServices.h' in framework 'CoreServices' (loaded from '/System/Library/Frameworks')