Opened 6 years ago

Closed 4 years ago

#55458 closed enhancement (wontfix)

Embed wxWidgets

Reported by: mybofy Owned by: mojca (Mojca Miklavec)
Priority: Normal Milestone:
Component: ports Version:
Keywords: Cc:
Port: wxWidgets-3.2

Description

Bonjour

macOS 10.13 - Xcode 9

I use the port 3.1 of wxWidgets in my application. All works well on my machine. To distribute my application I ned to embed wxWidgets in my application. After many manipulation with install_name_tool, impossible to obtain a product whithout error.

Why Mac Ports does not propose an option to conform to the necessity to have @rpath instead of absolut path to embed the ports in macOS ? In case of wxWidgets, there too much dependences to do that manualy.

In fact the best way, would be to produce frameworks, but well formed frameworks for macOS. The actually wxWidgets.frameworks is a pseudo framewoks, without any interest !

I hope you take my proposition in consideration.

Sorry for my bad english.

Merci

Change History (4)

comment:1 Changed 6 years ago by mf2k (Frank Schima)

Owner: set to mojca
Port: wxWidgets-3.2 added
Status: newassigned
Type: defectenhancement

In the future, please fill in the Port field and Cc the port maintainers (port info --maintainers wxWidgets-3.2).

comment:2 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

MacPorts does not claim in general to provide relocatable software. We intend for users to use the software provided by MacPorts at the location where MacPorts installed it; for that purpose, it does not need to be relocatable.

If you want to take software provided by MacPorts and make it relocatable and bundle it with an application, you can do that. Instead of running lots of install_name_tool commands manually, I recommend using the dylibbundler program available by running sudo port install dylibbundler.

$ dylibbundler --help
dylibbundler 0.4.4
dylibbundler is a utility that helps bundle dynamic libraries inside OS X application bundles.

-x, --fix-file <file to fix (executable or app plug-in)>
-b, --bundle-deps
-d, --dest-dir <directory to send bundled libraries (relative to cwd)>
-p, --install-path <'inner' path of bundled libraries (usually relative to executable, by default '@executable_path/../libs/')>
-of, --overwrite-files (allow overwriting files in output directory)
-od, --overwrite-dir (totally overwrite output directory if it already exists. implies --create-dir)
-cd, --create-dir (creates output directory if necessary)
-i, --ignore <location to ignore> (will ignore libraries in this directory)
-h, --help

comment:3 Changed 6 years ago by ctreleaven (Craig Treleaven)

Another option is to use create a standalone installer for your application. MacPorts can help to create such installers via port mdmg BLAH or port mpkg BLAH. See man port-dmg for the basics or my notes in the wiki at:

wiki:howto/CreateInstallers

Note that the libraries your app needs with be installed under in your chosen prefix--NOT in the application bundle. Generally, that is not a problem for users, though.

Last edited 6 years ago by ryandesign (Ryan Carsten Schmidt) (previous) (diff)

comment:4 Changed 4 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: wontfix
Status: assignedclosed
Note: See TracTickets for help on using tickets.