Deleting the wiki page 'Working on macOS' cannot be undone. Continue?
The quickstart is a cross platform template for all desktop platforms that will setup raylib automatically.
https://github.com/raylib-extras/raylib-quickstart
It works with many compilers on windows, linux and Mac OS. Works with makefiles, visual studio, and VSCode.
Simply follow the instructions in that link and you will be done, you do not need to use the rest of this document.
This guide has been written using the following software:
Homebrew build option tested on:
Steps:
Get a Mac with OSX version 10.11.3.
Install Apple Developer Tools. Those tools include Xcode, in our case version 7.2.1.
Install raylib library
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install raylib
yourgame
:eval cc yourgame.c $(pkg-config --libs --cflags raylib) -o YourGame
eval cc yourgame.c -framework IOKit -framework Cocoa -framework OpenGL $(pkg-config --libs --cflags raylib) -o YourGame
You may get an error, complaining that the pkg-config
command was not found. You can use brew install pkgconfig
to fix that. If you install pkgconfig after you have installed raylib with homebrew, you should reinstall raylib so that pkgconfig works correctly. Use in the terminal
brew reinstall raylib
NOTE: The raylib Homebrew package tracks the latest raylib release and as such can be out of date with what's in master. For active development, we suggest building the newest development snapshot instead.
raylib-master.zip
contains all required files: source code, examples, templates, games...raylib-master.zip
in some folder. In case of using Safari browser, it will be automatically decompressed.raylib-master/src
directory: cd raylib-master/src
make PLATFORM=PLATFORM_DESKTOP
libraylib.a
should be created in raylib-master/src
folder.Command Line Tool
. Make sure selected language is C.Build Phases
window, just enter and select Link Binary With Libraries
. There you should add project libraries:
Add Other...
, look for libraylib.a
file created previously, it should be in folder raylib-master/release/osx
(make sure library has been created in that folder).raylib.h
: Go to Build Settings > Search Paths
and add raylib header folder (raylib-master/src
) to Header Search Paths
libraylib.a
: Go to Build Settings > Search Paths
and add raylib library folder (raylib-master/release/osx
) to Library Search Paths
.main.c
file and run it with Run button or ⌘R.NOTES:
Tutorial written by Aleix Rafegas and translated to English by Ray
Building statically means you can run this application on other machines with ease - users won't have to have any of the frameworks installed that are required. Also, this will work on mac's 10.9 and up.
export MACOSX_DEPLOYMENT_TARGET=10.9
xcode-select --install
git clone https://github.com/raysan5/raylib.git
cd raylib/src
make
You may do the otool check with the file in raylib/src/libraylib.a here if you like. (LC_VERSION_MIN_MACOSX should be version 10.4), and we're good!
cp raylib/src/libraylib.a YOUR_PROJECTS_ROOT_FOLDER
clang -framework CoreVideo -framework IOKit -framework Cocoa -framework GLUT -framework OpenGL libraylib.a my_app.c -o my_app
Note: If you are compiling a C++ project, you will need to make sure your compiler supports C++11 standards. With clang you can enable this by passing -std=c++11
, see https://clang.llvm.org/cxx_status.html for more details.
Check for warnings! This can tell you if a library you're linking to was not built for OSX 10.9, in which case you'll need to rebuild that too.
Check otool one last time for the LC_VERSION_MIN_MACOSX version:
otool -l my_app
Last thing, let me show you something cool:
otool -L my_app
This shows you everything your application links to. Basically, if anything is pointing to anything but /usr/lib/* or /System/Library/*, your application will throw an error if you run it on any other Mac. It's not portable. For example if it's linking to something in /usr/local/lib, or a relative folder, that would be bad. But after the above, you should be clear of dynamic dependencies!
mkdir standard.app/Contents
mkdir standard.app/Contents/MacOS
mkdir standard.app/Contents/Resources
touch standard.app/Contents/Info.plist
The app you just created, "my_app" should go in the MacOS folder.
mv my_app standard.app/Contents/MacOS
Info.plist should read like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>my_app</string>
</dict>
</plist>
See more fields you can add here: https://stackoverflow.com/questions/1596945/building-osx-app-bundle
Now you can double click on standard.app and it will run your application! Note that some things will be cached by the OS. If you want to refresh your application bundle run this:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -f standard.app
This has a whole lot of potentially useful info on all the apps on your system, you can use this to determine if the version is correct I suppose:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump > dump.txt
Just search for your app in dump.txt.
You could just as easily do a zip I suppose, but DMGs are fashionable aren't they?
Here's a 32 megabyte dmg:
hdiutil create -size 32m -fs HFS+ -volname "My App" my_app_writeable.dmg
my_app_writeable.dmg
. This should tell you something like /dev/disk3
or something. Make a note of that, you'll need it for the next step.hdiutil attach my_app_writeable.dmg
disk999
with whatever /dev/disk
was specified in the previous step.hdiutil detach /dev/disk999
my_app.dmg
.hdiutil convert my_app_writeable.dmg -format UDZO -o my_app.dmg
my_app.dmg
is ready to be sent to all your most trusted game critics.www.raylib.com | itch.io | GitHub | Discord | YouTube
Deleting the wiki page 'Working on macOS' cannot be undone. Continue?