繁体   English   中英

C或C++或Objective-C中的headermap是什么

[英]What is a headermap in C or C++ or Objective-C

我只是想使用 Xcode 来处理 C 程序 - (这是一个基于 gtk 的程序)并收到错误消息“不再支持传统的标题图样式,请迁移到使用单独的 hedermaps”

什么是标题图?

谷歌搜索 headermap 和 C/C/Objective-C 只会让我回到这个 Xcode 错误消息

在 Apple Devreloper 网站上搜索没有返回任何结果 没有有用的信息 - 它确实找到了

新构建系统不支持当始终搜索用户路径 (ALWAYS_SEARCH_USER_PATHS) 设置为 YES 时生成的遗留 header map。 相反,将 ALWAYS_SEARCH_USER_PATHS 设置为 NO 并迁移到使用现代 header 包含语法。 将项目存储库中任何需要的 header 文件添加到 Xcode 项目,以确保它们可用于 #include(通过项目范围 header 映射)。 对项目头文件使用引号式包含 ("example.h"),对系统头文件保留尖括号包含 (<example.h>)。

什么是“modern header include syntax”及其定义的标准(或定义的任何地方)

headermap 一词在哪里定义,它是什么?

这个链接,作者 Mark Mentovai

默认情况下,Xcode 使用“标头映射”与 gcc 进行通信。header map 应该是一种优化,可减少编译器在磁盘上的重复搜索。 header map 本质上是一个 hash 表的结构,由 #includes 中使用的名称作为键,并提供实际文件的路径名。 一般来说,由 Xcode 生成的 header 映射提供对目标文件或项目文件中所有 header 文件的访问。 Xcode 通过传递引用 header map 文件而不是目录的 -I 或 -iquote 参数来通知编译器使用一个或多个 header 映射。 编译器将 header 映射集成到其正常搜索顺序中,除了遇到对应于 header map 的 -I 或 -iquote 时,它会查询 header map 文件而不是搜索目录。

Header 地图破坏了我好几天,所以我现在总是通过设置 USE_HEADERMAP = NO 在 Xcode 中禁用它们。 但是,默认情况下它们是打开的,禁用它们的设置没有任何 UI,因此大多数项目最终都依赖于 header map,无论他们是否打算这样做。

据我所知,header map 文件格式没有公开记录,但格式很简单,Apple gcc 可以理解。相关源代码位于:

http://www.opensource.apple.com/darwinsource/DevToolsOct2008/gcc_42-5566/libcpp/include/cpplib.h http://www.opensource.apple.com/darwinsource/DevToolsOct2008/gcc_42-5566/gcc/c -incpath.c

另请参阅位于 src/xci_headermap.c 的 distccd 服务器中的 header map 重写器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM