====== Setting up a game project on the Mac ======
This is the third article in a series for Orx on Mac OS X.
The [[en:tutorials:orx:mac:setting_up_dev_on_mac|first article]] helped the user set up their Mac for development by downloading the //Xcode Commandline Developer Tools// which gives the user the GCC compiler, the ''git'' command, and a MacOSX SDK.
The [[en:tutorials:orx:mac:cloning_and_building_orx_on_mac|second article]] guided the user how to compile the Orx library.
This article will teach how to create your own game project using the Orx tools and Orx library.
===== Creating a new game project with "init" =====
In the root of the orx project folder, you will see a script called ''init.sh''.
This tool let's you create a project for the Mac in all available IDEs and compilers.
- Open a Terminal
- cd into the ''~/Documents/orx/'' folder
- Type: ''./init.sh ~/Documents/MyGame''
You will see output like:
[ 12:09:40 ] Initializing [ MyGame ] in [ /Documents/ ]
[ 12:09:40 ] == Creating files:
+ MyGame/.editorconfig
+ MyGame/build/premake4.lua
+ MyGame/data/config/MyGame.ini
+ MyGame/data/config/MyGamed.ini
+ MyGame/data/config/MyGamep.ini
+ MyGame/data/config/CreationTemplate.ini
+ MyGame/data/config/SettingsTemplate.ini
+ MyGame/data/sound/appear.ogg
+ MyGame/data/texture/logo.png
+ MyGame/src/MyGame.cpp
[ 12:09:40 ] Generating build files for [ mac ]:
* gmake
Building configurations...
Running action 'gmake'...
Generating mac/gmake/Makefile...
Generating mac/gmake/MyGame.make...
Done.
* codelite
Building configurations...
Running action 'codelite'...
Generating mac/codelite/MyGame.workspace...
Generating mac/codelite/MyGame.project...
Done.
* codeblocks
Building configurations...
Running action 'codeblocks'...
Generating mac/codeblocks/MyGame.workspace...
Generating mac/codeblocks/MyGame.cbp...
Done.
* xcode4
Building configurations...
Running action 'xcode4'...
Generating mac/xcode4/MyGame.xcworkspace/contents.xcworkspacedata...
Generating mac/xcode4/MyGame.xcodeproj/project.pbxproj...
Done.
[ 12:09:40 ] Init successful!
You can see that Solution Projects have been created for gmake, Codelite, Code::Blocks and Xcode.
Use Finder to take a look at the structure of your game folders:
{{ tutorials:orx:mac:my-game-folder.jpg |}}
Your project can be compiled and developed in any of these IDE's (or a text editor in the case of gmake). We'll use gmake because if you have been following the series with a clean Mac, gcc/make is what we have.
===== Compiling our game project with gmake =====
- cd into ''~/Documents/MyGame/build/mac/gmake''
- type: ''make''
(the above is the same as typing the default of: ''make config=debuguniv64'')
You'll see your game compile with:
==== Building orxLIB (debuguniv64) ====
Creating obj/x64/Debug/orxLIB
orxPlugin_EmbeddedList.cpp
orxAnim.c
orxAnimPointer.c
orxAnimSet.c
----- >8 snip ------
orxLinkList.c
orxString.c
orxTree.c
Linking orxLIB
ld: warning: directory not found for option '-L/usr/lib64'
Running post-build commands
cp -f ../../../lib/dynamic/liborx*.dylib ../../../bin
==== Building orx (debuguniv64) ====
Creating obj/x64/Debug/orx
orxMain.c
Linking orx
ld: warning: directory not found for option '-L/usr/lib64'
==== Building Bounce (debuguniv64) ====
Creating obj/x64/Debug/Bounce
orxBounce.c
Linking Bounce
ld: warning: directory not found for option '-L/usr/lib64'
You'll also notice the post-build step of:
Running post-build commands
cp -f ../../../lib/dynamic/liborx*.dylib ../../../bin
This step is used to copy the dylib(s) into the game's bin folder. How is the compiler able to do this if our game project is in a completely different place to the Orx library project? The answer is: the location stored in the $ORX environment variable.
The variable is taken from your ''.bashrc'' and ''.profile'' files. The variable holds the location of the Orx Includes and Orx libraries (dylib) to link to.
===== Running our game project =====
Now to run our compiled program.
* cd ''~/Documents/MyGame/bin''
* Type: ''./MyGamed''
{{ tutorials:orx:mac:run-mac-game-template.jpg |}}
You're all done! Congratulations on compiling the Orx library, and your very first Orx game project.
You might be interested to move onto the [[en:guides:beginners:main|Beginner's Tutorial]] and create a platform game.
===== Troubleshooting =====
MacOS varies in it's treatment of environment variables, So depending on which MacOS version or Codelite version you have, you may need to perform some extra steps.
==== Environment Variable Problems ====
If when trying to compile you may get an error similar to the following:
cp: /Users/xxxx/Documents/orx/code/no/lib/dynamic/liborx*.dylib: No such file or directory
make: *** [PostBuild] Error 1
or
/Users/xxxx/Documents/simplescroll/src/simplescroll.cpp:6:10: fatal error: 'orx.h' file not found
#include "orx.h"
^~~~~~~
This one is generally caused by the ''$ORX'' environment being set, however, the MacOS version or Codelite version not honouring the variable. In this case, you need to set the variable within Codelite.
To do this, go to: Settings / Environment Variables
Add the following line:
ORX=/Users/canberra-air/Documents/orx/code/
==== Debugging Problems ====
When trying to run the debugger you may get a dialog box saying:
Failed to locate gdb at ‘gdb’
Right click on your project. Then go to ''General'' / ''Debugger'' property (not the Debugger section), Switch from ''GCC Debugger'' to ''LLDB Debugger''.