gpt4 book ai didi

swift - 我可以在 module.modulemap 中使用环境变量或波浪号吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:37 27 4
gpt4 key购买 nike

我的 module.modulemap 文件如下所示:

module CompanyInternalSDK {
header "~/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
export *
}

但是,我得到这个错误:

/Users/username/Path/To/Project/CompanyInternalSDK/module.modulemap:2:12: error: header '~/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h' not found
header "~/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
^

当我使用不带波浪号的绝对路径时它编译得很好,但是因为这将像这样分发给所有开发人员,所以我想使用波浪号。 有什么方法可以使它正常工作吗?


我还尝试在 header 字符串中使用环境变量,但这也不起作用:

module CompanyInternalSDK {
header "${HOME}/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
export *
}
/Users/username/Path/To/Project/CompanyInternalSDK/module.modulemap:2:12: error: header '${HOME}/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h' not found
header "${HOME}/Company/CompanyInternalSDK.framework/Headers/CompanyInternalSDK.h"
^

最佳答案

不,modulemap 语法不扩展波浪号或环境变量。它最终只是期望 stat 你给它的路径,如果没有文件,它就会提示。

  • Here's在模块映射文件的词法分析期间,头文件查找开始的地方。
  • 它最终将路径传递给 SourceManager 的 FileManager 以生成一个 File 对象,如 here用于框架的 Headers/ 公共(public) header 文件夹中的 header 。
  • getFile最终呼唤getStatValue ,执行缓存查找。
  • FileSystemStatCache::get最终以 LLVM 的文件系统抽象为基础,它调用了 sys::fs::status。 ,它被记录为类似于 POSIX stat
  • POSIX stat 按原样使用路径,没有波浪号或环境变量扩展 - 这些的普遍可用性是由于 shell 帮助你,而不是大多数时候自动发生的事情系统级。

但是,在模块映射中使用相对路径 是标准做法。词法分析器尊重这一点,所有模块映射文档都证明了这一点。在您的模块映射文件与您的库位于同一位置并与其一起安装的常见情况下,这应该足以正确解析路径。

关于swift - 我可以在 module.modulemap 中使用环境变量或波浪号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43724692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com