Hello I recently went through the process of embedding the Racket.framework in Xcode, and i just wanted to share the steps in case anyone else would like to do this.
Note the documentation says ( https://docs.racket-lang.org/inside/cs-embedding.html) "On Mac OS, besides "libracketcs.a" for static linking, a dynamic library is provided by the "Racket" framework, which is typically installed in "lib" sub-directory of the installation. Supply -framework Racket to gcc when linking, along with -F and a path to the "lib" directory. At run time, either "Racket.framework" must be moved to a location in the standard framework search path, or your embedding executable must provide a specific path to the framework (possibly an executable-relative path using the Mach-O @executable_path prefix)." That sets the rpath search paths but the library binary still needs to reference @rpath to make use of these search paths. Below we use install_name_tool to fix up the binary to reference the @rpath directly. Note also that Xcode is hard coded to codesign in the Versions/A subdirectory and hasn't added any support for signing other major versions, so i link version A in the below steps. This step is only necessary if you wish to sign the framework on copy. Note also for a proper framework structure, the framework should have an Info.plist in Resources and a Versions/Current symlink. Top-level symlinks directly in Racket.framework should reference only Versions/Current and both Resources and the binary library (Racket) should be referenced. (see https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html ) Note also i did all of this with racket cs, you would have to modify the steps if you were using normal racket. All that said, here are the steps: Drag the framework into xcode select copy if needed, ok Click on project, General tab, "Frameworks, Libraries, and Embeddeed Content" Change do not embed to either embed or embed and sign cd to your copied framework in your project cd Versions ln -s 7.7_CS Current if "embed and sign" was chosen: ln -s 7.7_CS A (xcode is hard coded to sign the major version A, see https://developer.apple.com/forums/thread/65963) cp /path/to/Info.plist 7.7_CS/Resources cd .. rm -f Racket ln -s Versions/Current/Racket ln -s Versions/Current/Resources install_name_tool -id @rpath/Racket.framework/Versions/7.7_CS/Racket ./Racket otool -L Racket (to verify) Switch to Xcode, build and run Nate -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/CAM-xLPpC3Ona-zbV6r43dD_xjSmXa_eGGRLfFERuQ_tBgG%3D4HQ%40mail.gmail.com.
Info.plist
Description: Binary data