Giter VIP home page Giter VIP logo

macbundler's Introduction

Small helper program to bundle your macOS binaries into a .app or .bundle file.

Usage:

./macbundler
  <app or bundle> \
  -name "My App" \
  -binary yourbinary \
  -bundle-identifier com.example.blah \
  -o <output-directory> \ # optional
  -assets <folder-with-resources> \ # optional
  -icon myicon.icns \ # optional
  -frameworks <folder-with-libs-or-frameworks> \ # optional
  -only-plist \ # optional
  -use-plist myinfo.plist \ # optional

Example usage:

./macbundler app -name "Cool app" -binary cool_app -bundle-identifier com.danny.coolapp -o . -assets MyResourcesFolder -icon myicon.icns -frameworks MyLibs

# or for a .bundle
./macbundler bundle -name "Cool bundle" -binary cool_bundle -bundle-identifier com.danny.coolbundle -o . -assets MyResourcesFolder -icon myicon.icns -frameworks MyLibs

How to customize Info.plist?

Why? Because there is a lot of different keys you can put in the Info.plist, and I'm not going to support all of them. For example a useful key is the CFBundleSupportedPlatforms key. With that you can specify what platforms your App runs on.

  1. You can use the -only-plist flag to tell macbundler to only generate an Info.plist file. Example:
./macbundler app -name "My app" -binary myapp -bundle-identifier com.example -only-plist
  1. Make the changes you want to the Info.plist file that was generated for you.
  2. Then you can use macbundler again with the -use-plist command and supply it the path to that Info.plist file. Example:
./macbundler app -name "My app" -binary myapp -bundle-identifier com.example -use-plist Info.plist

Code signing / setting rpaths / universal binaries

Maybe I will support this later, however it is outside of the scope of what this simple program is for. This program is mainly just a small tool to help me generate a .app file for my current project I'm working on. I don't want to put too much work into this tool because Platin21 is working on adding a macOS bundler to the Odin compiler itself, which would fully handle all those features and more.

macbundler's People

Contributors

sackboy19 avatar

Stargazers

Karl Zylinski avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.