Issue #525

Use macOS Command Line project

Example Puma

  • Create a new macOS project, select Command Line Tool Screenshot 2019-11-30 at 22 40 35
  • Drag Puma.xcodeproj as a sub project of our test project
  • Go to our TestPuma target, under Link Binary with Libraries, select Puma framework
Screenshot 2019-11-30 at 22 41 18
  • Puma has dependencies on PumaCore and PumaiOS, but in Xcode we only need to select Puma framework

  • In code, we need to explicitly import PumaiOS framework if we use any of its classes

import Foundation
import Puma
import PumaiOS

func testDrive() {
    run {
        SetVersionNumber {
  • As our Puma.xcodeproj is inside this test project, we can drill down into our Puma.xcodeproj and update the code.


Instead of dragging Puma as a subproject of TestPuma, we can use workspace, and link Puma frameworks

Screenshot 2019-12-14 at 21 36 32


Code signing for frameworks

To avoid signing issue, we need to select a Team for all frameworks

not valid for use in process using Library Validation: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?

Library not loaded

Need to set runpath search path, read

Specify LD_RUNPATH_SEARCH_PATHS = @executable_path in Build Settings

missing required module ‘clibc’

Take a look at Puma -> SPMLibc, there’s header search path


which is at the .build folder inside root

Screenshot 2019-12-14 at 21 55 30

So for our TestPuma target, we need to add this header search path with the correct path

Screenshot 2019-12-14 at 21 55 55

Read more