xcake icon indicating copy to clipboard operation
xcake copied to clipboard

Can't run my program, because the framework isn't included.

Open srbaker opened this issue 2 years ago • 1 comments

Hi,

I am new to xcake.

(The Repo is over here: https://github.com/srbaker/Raphael)

I have the following Cakefile, and it references a framework which is built already that I just want to add to my project:

project.name = "Raphael"
project.class_prefix = "RAP"

application_for :osx, 10.11 do |target|
  target.name = "Raphael"
  target.all_configurations.each { |configuration|
    configuration.product_bundle_identifier = "com.stevenrbaker.raphael"
    configuration.settings["FRAMEWORK_SEARCH_PATHS"] = "../libs-renaissance/Source/**"
  }
  target.include_files << "../libs-renaissance/Source/Renaissance.framework"

  target.copy_files_build_phase "Embed Frameworks" do |phase|
    phase.files = [
      "../libs-renaissance/Source/Renaissance.framework"
    ]
    phase.destination = :frameworks
  end

  target.language = :objc
  target.type = :application
end

When I build and run in Xcode, it can't find the framework. And it's not added to the built app.

The error is:

dyld[30429]: Library not loaded: Renaissance.framework/Renaissance
  Referenced from: /Users/srbaker/Library/Developer/Xcode/DerivedData/Raphael-fgxqqojptmejsqhakvbdzhcssxdi/Build/Products/Debug/Raphael.app/Contents/MacOS/Raphael
  Reason: tried: '/Users/srbaker/Library/Developer/Xcode/DerivedData/Raphael-fgxqqojptmejsqhakvbdzhcssxdi/Build/Products/Debug/Renaissance.framework/Renaissance' (no such file), 'Renaissance.framework/Renaissance' (no such file), '/Library/Frameworks/Renaissance.framework/Renaissance' (no such file), '/System/Library/Frameworks/Renaissance.framework/Renaissance' (no such file)

I suspect this is a complete newbie error on my part. Thanks!

srbaker avatar Apr 02 '22 22:04 srbaker

Hey!

From the looks of it, you're building and linking your app successfully. Is the framework copied over to the Frameworks folder in the app bundle?

If so, my guess is the dylib loader is missing some rpath to know where to load Renaissance.framework/Renaissance from. However, I'm not a big expert on rpaths on macOS. I think you need to add @executable_path/../Frameworks to your LD_RUNPATH_SEARCH_PATHS build variable.

igor-makarov avatar Apr 03 '22 08:04 igor-makarov