是否可以在模块图中使用系统范围的标头?

时间:2017-08-03 09:42:16

标签: swift module-map

我想将OpenSSL绑定到我的Swift客户端代码。我现在使用的是模块映射中引用的伞头:

module COpenSSL [system] {
  header "copenssl.h"
  export *
}

copenssl.h位于同一目录中,它只是一系列内容,例如#include <openssl/conf.h>。使用所有需要的编译器标志,它可以完美地工作:我能够导入COpenSSL并使用它中的符号。

但是,我担心代码中的另一个间接层。我怀疑它是否真的有必要。如果我删除了伞标题copenssl.h,只需将包含内容粘贴到模块映射中,如下所示:

module COpenSSL [system] {
  header "openssl/conf.h"
  /* ...and more */
  export *
}

然后它不再能找到标题,即使所有标志都相同。感觉编译器只搜索模块映射目录,而不是尊重项目的搜索路径设置。

docs说:

  

该文件可以通过绝对路径或相对于当前地图文件的路径引用。

     

- http://clang.llvm.org/docs/Modules.html#module-declaration

但我对于修改路径犹豫不决,因为它阻碍了跨平台性。

我应该只使用伞形标题,还是有任何方法要求编译器查看-I路径?

0 个答案:

没有答案