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')