Swift Package Manager: What is the difference between using a modulemap and an include directory?

In Swift Packages, what is the difference between using a modulemap and an include directory? What does Swift Package Manager use, both? I don't know how they interplay.

It's quite a simple question (with a difficult answer :joy:?), and I believe I understand what each of them are for:

  • include directory: Exposing public headers, just put all private headers in here, and they will be accessible without a modulemap.
  • ModuleName.modulemap: Specifies the module, and the headers available in the clang module. This allows people to @import ModuleName in Objective-C. For some reason, all headers are included in the modulemap, and some headers are put in a submodule, explicit module Private { }. Header paths must be absolute paths in the modulemap? :thinking:
    • Module maps must contain absolute paths source

There are so many unanswered questions in my head with Swift packages and compilation. I think its solvable by a blog post written by someone who knows a lot about this. :innocent:

Terms of Service

Privacy Policy

Cookie Policy