Subprojects in Xcode with Static Libs

Static libraries produce .a files. The catch is: static libraries cannot contain Swift files. But anyway...


Workspaces and Projects
  • You can add projects to projects (subprojects) or to workspaces
  • Projects can be saved as workspaces
  • Add a project to another project -- or a workspaces -- by adding the .xcodeproj file.



Early Setup
Add GBDevice as a submodule
git submodule add https://github.com/lmirosevic/GBDeviceInfo.git GBDeviceInfo



Set It Up
  1. Create a new, Single View Application for iOS
  2. Add the .xcodeproj for an Xcode project that produces a .a file

    In this example we're using GBDevice.

  3. Set up the primary project like this




Import Objective-C to Swift
  • Create a new header file called BridgingHeader.h
  • Add it to the Build Settings for the Single Window App



  • Utilize it in a Swift file

    let version = GBDeviceInfo.init().modelString
    print(version)
  • That's it.


The kicker is: you cannot use Swift in a static library, so there's that. Hence this other article I wrote (longer, and uses Cocoapods)