diff --git a/xcode/templates/SFML Application Base.xctemplate/ResourcePath.hpp b/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.hpp
similarity index 100%
rename from xcode/templates/SFML Application Base.xctemplate/ResourcePath.hpp
rename to xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.hpp
diff --git a/xcode/templates/SFML Application Base.xctemplate/ResourcePath.mm b/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.mm
similarity index 100%
rename from xcode/templates/SFML Application Base.xctemplate/ResourcePath.mm
rename to xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.mm
diff --git a/xcode/templates/SFML Application Base.xctemplate/TemplateInfo.plist b/xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist
similarity index 78%
rename from xcode/templates/SFML Application Base.xctemplate/TemplateInfo.plist
rename to xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist
index c6bfcd29..137453a3 100644
--- a/xcode/templates/SFML Application Base.xctemplate/TemplateInfo.plist
+++ b/xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist
@@ -42,6 +42,64 @@ subject to the following restrictions:
Options
+
+
+ Identifier
+ libraryType
+ Name
+ Use frameworks
+ Description
+ Indicates whether frameworks should be used instead of dylibs or not.
+ Type
+ checkbox
+ SortOrder
+ 1
+ Default
+ false
+ Units
+
+
+ true
+
+
+ Project
+
+ SharedSettings
+
+ SFML_LINK_PREFIX
+ $(SFML_LINK_FRAMEWORKS_PREFIX)
+
+ SFML_LINK_SUFFIX
+ $(SFML_LINK_FRAMEWORKS_SUFFIX)
+
+ HEADER_SEARCH_PATHS
+ $(HEADER_SEARCH_PATHS)
+
+
+
+
+ false
+
+
+ Project
+
+ SharedSettings
+
+ SFML_LINK_PREFIX
+ $(SFML_LINK_DYLIBS_PREFIX)
+
+ SFML_LINK_SUFFIX
+ $(SFML_LINK_DYLIBS_SUFFIX)
+
+ HEADER_SEARCH_PATHS
+ $(HEADER_SEARCH_PATHS) /usr/local/include/
+
+
+
+
+
+
+
Identifier
@@ -66,11 +124,8 @@ subject to the following restrictions:
SharedSettings
- WINDOW_RELEASE
- -lsfml-window
-
- WINDOW_DEBUG
- -lsfml-window-d
+ SFML_WINDOW
+ $(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX)
@@ -99,10 +154,7 @@ subject to the following restrictions:
SharedSettings
- WINDOW_RELEASE
-
-
- WINDOW_DEBUG
+ SFML_WINDOW
@@ -157,11 +209,8 @@ subject to the following restrictions:
SharedSettings
- GRAPHICS_RELEASE
- -lsfml-graphics
-
- GRAPHICS_DEBUG
- -lsfml-graphics-d
+ SFML_GRAPHICS
+ $(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX)
@@ -256,10 +305,7 @@ text.SetColor(sf::Color::Black);
SharedSettings
- GRAPHICS_RELEASE
-
-
- GRAPHICS_DEBUG
+ SFML_GRAPHICS
@@ -307,11 +353,8 @@ text.SetColor(sf::Color::Black);
SharedSettings
- AUDIO_RELEASE
- -lsfml-audio
-
- AUDIO_DEBUG
- -lsfml-audio-d
+ SFML_AUDIO
+ $(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX)
@@ -354,10 +397,7 @@ music.Play();
SharedSettings
- AUDIO_RELEASE
-
-
- AUDIO_DEBUG
+ SFML_AUDIO
@@ -402,11 +442,8 @@ music.Play();
SharedSettings
- NETWORK_RELEASE
- -lsfml-network
-
- NETWORK_DEBUG
- -lsfml-network-d
+ SFML_NETWORK
+ $(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX)
@@ -427,10 +464,7 @@ music.Play();
SharedSettings
- NETWORK_RELEASE
-
-
- NETWORK_DEBUG
+ SFML_NETWORK
@@ -560,13 +594,23 @@ while (window.IsOpened())
PRODUCT_NAME
$(TARGET_NAME)
- SYSTEM_RELEASE
- -lsfml-system
- SYSTEM_DEBUG
- -lsfml-system-d
-
- HEADER_SEARCH_PATHS
- $(HEADER_SEARCH_PATHS) /usr/local/include/
+ SFML_LINK_DYLIBS_PREFIX
+ -l
+
+ SFML_LINK_FRAMEWORKS_PREFIX
+ -framework
+
+ SFML_SYSTEM
+ $(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX)
+
+ SFML_LINK_FRAMEWORKS_SUFFIX
+
+
+ CLANG_ENABLE_OBJC_ARC
+
+
+ GCC_ENABLE_OBJC_GC
+ unsupported
Configurations
@@ -574,16 +618,22 @@ while (window.IsOpened())
Debug
+ SFML_LINK_DYLIBS_SUFFIX
+ -d
+
OTHER_LDFLAGS
-$(OTHER_LDFLAGS) $(SYSTEM_DEBUG) $(WINDOW_DEBUG) $(GRAPHICS_DEBUG) $(AUDIO_DEBUG) $(NETWORK_DEBUG)
+ $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)
Release
+ SFML_LINK_DYLIBS_SUFFIX
+
+
OTHER_LDFLAGS
-$(OTHER_LDFLAGS) $(SYSTEM_RELEASE) $(WINDOW_RELEASE) $(GRAPHICS_RELEASE) $(AUDIO_RELEASE) $(NETWORK_RELEASE)
+ $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)
@@ -606,8 +656,16 @@ while (window.IsOpened())
/bin/sh
ShellScript
- # This shell script simply copies required sfml dylibs into the application bundle frameworks folder
-# NB : this script assumes that if moduleX is required in release mode then it is also required in debug mode.
+ # This shell script simply copies required sfml dylibs/frameworks into the application bundle frameworks folder.
+# If you're using static libraries (which is not recommended) you should remove this script from your project.
+
+# Are we building a project that uses framework or dylibs ?
+if [ $SFML_LINK_PREFIX = $SFML_LINK_FRAMEWORKS_PREFIX ]
+then
+ frameworks=1
+else
+ frameworks=0
+fi
require () # $1 is a SFML module like 'system' or 'audio'
{
@@ -616,45 +674,58 @@ require () # $1 is a SFML module like 'system' or 'audio'
echo "no parameter! ERROR!"
exit
else
- if [ $CONFIGURATION = "Debug" ]
+ # clean potentially old stuff
+ rm -f $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/libsfml-$1.2.dylib
+ rm -f $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/libsfml-$1-d.2.dylib
+ rm -f $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/sfml-$1.framework
+
+ # copy SFML libraries
+ if [ $frameworks ]
+ then
+ ditto /Library/Frameworks/sfml-$1.framework $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/sfml-$1.framework
+ elif [ $CONFIGURATION = "Debug" ]
then
- rm -f $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/libsfml-$1.2.dylib
ditto /usr/local/lib/libsfml-$1-d.2.dylib $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/libsfml-$1-d.2.dylib
else
- rm -f $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/libsfml-$1-d.2.dylib
ditto /usr/local/lib/libsfml-$1.2.dylib $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/libsfml-$1.2.dylib
fi
+
+ if [ $1 = "audio" ]
+ then
+ # copy sndfile framework too
+ ditto /Library/Frameworks/sndfile.framework $BUILT_PRODUCTS_DIR/test.app/Contents/Frameworks/sndfile.framework
+ fi
fi
}
-if [ -n "$SYSTEM_RELEASE" ]
+if [ -n "$SFML_SYSTEM" ]
then
require "system"
fi
-if [ -n "$AUDIO_RELEASE" ]
+if [ -n "$SFML_AUDIO" ]
then
require "audio"
fi
-if [ -n "$NETWORK_RELEASE" ]
+if [ -n "$SFML_NETWORK" ]
then
require "network"
fi
-if [ -n "$WINDOW_RELEASE" ]
+if [ -n "$SFML_WINDOW" ]
then
require "window"
fi
-if [ -n "$GRAPHICS_RELEASE" ]
+if [ -n "$SFML_GRAPHICS" ]
then
require "graphics"
fi
RunOnlyForDeploymentPostprocessing
- NO
+ YES
diff --git a/xcode/templates/SFML Application Base.xctemplate/cute_image.jpg b/xcode/templates/SFML/SFML Application Base.xctemplate/cute_image.jpg
similarity index 100%
rename from xcode/templates/SFML Application Base.xctemplate/cute_image.jpg
rename to xcode/templates/SFML/SFML Application Base.xctemplate/cute_image.jpg
diff --git a/xcode/templates/SFML Application Base.xctemplate/nice_music.ogg b/xcode/templates/SFML/SFML Application Base.xctemplate/nice_music.ogg
similarity index 100%
rename from xcode/templates/SFML Application Base.xctemplate/nice_music.ogg
rename to xcode/templates/SFML/SFML Application Base.xctemplate/nice_music.ogg
diff --git a/xcode/templates/SFML Application Base.xctemplate/sansation.ttf b/xcode/templates/SFML/SFML Application Base.xctemplate/sansation.ttf
similarity index 100%
rename from xcode/templates/SFML Application Base.xctemplate/sansation.ttf
rename to xcode/templates/SFML/SFML Application Base.xctemplate/sansation.ttf
diff --git a/xcode/templates/SFML Application.xctemplate/TemplateIcon.icns b/xcode/templates/SFML/SFML Application.xctemplate/TemplateIcon.icns
similarity index 100%
rename from xcode/templates/SFML Application.xctemplate/TemplateIcon.icns
rename to xcode/templates/SFML/SFML Application.xctemplate/TemplateIcon.icns
diff --git a/xcode/templates/SFML Application.xctemplate/TemplateInfo.plist b/xcode/templates/SFML/SFML Application.xctemplate/TemplateInfo.plist
similarity index 100%
rename from xcode/templates/SFML Application.xctemplate/TemplateInfo.plist
rename to xcode/templates/SFML/SFML Application.xctemplate/TemplateInfo.plist
diff --git a/xcode/templates/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist b/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist
similarity index 82%
rename from xcode/templates/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist
rename to xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist
index 428e6d18..8746f3bd 100644
--- a/xcode/templates/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist
+++ b/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist
@@ -42,6 +42,64 @@ subject to the following restrictions:
Options
+
+
+ Identifier
+ libraryType
+ Name
+ Use frameworks
+ Description
+ Indicates whether frameworks should be used instead of dylibs or not.
+ Type
+ checkbox
+ SortOrder
+ 1
+ Default
+ false
+ Units
+
+
+ true
+
+
+ Project
+
+ SharedSettings
+
+ SFML_LINK_PREFIX
+ $(SFML_LINK_FRAMEWORKS_PREFIX)
+
+ SFML_LINK_SUFFIX
+ $(SFML_LINK_FRAMEWORKS_SUFFIX)
+
+ HEADER_SEARCH_PATHS
+ $(HEADER_SEARCH_PATHS)
+
+
+
+
+ false
+
+
+ Project
+
+ SharedSettings
+
+ SFML_LINK_PREFIX
+ $(SFML_LINK_DYLIBS_PREFIX)
+
+ SFML_LINK_SUFFIX
+ $(SFML_LINK_DYLIBS_SUFFIX)
+
+ HEADER_SEARCH_PATHS
+ $(HEADER_SEARCH_PATHS) /usr/local/include/
+
+
+
+
+
+
+
Identifier
@@ -66,11 +124,8 @@ subject to the following restrictions:
SharedSettings
- WINDOW_RELEASE
- -lsfml-window
-
- WINDOW_DEBUG
- -lsfml-window-d
+ SFML_WINDOW
+ $(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX)
@@ -99,10 +154,7 @@ subject to the following restrictions:
SharedSettings
- WINDOW_RELEASE
-
-
- WINDOW_DEBUG
+ SFML_WINDOW
@@ -157,11 +209,8 @@ subject to the following restrictions:
SharedSettings
- GRAPHICS_RELEASE
- -lsfml-graphics
-
- GRAPHICS_DEBUG
- -lsfml-graphics-d
+ SFML_GRAPHICS
+ $(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX)
@@ -256,10 +305,7 @@ text.SetColor(sf::Color::Black);
SharedSettings
- GRAPHICS_RELEASE
-
-
- GRAPHICS_DEBUG
+ SFML_GRAPHICS
@@ -307,11 +353,8 @@ text.SetColor(sf::Color::Black);
SharedSettings
- AUDIO_RELEASE
- -lsfml-audio
-
- AUDIO_DEBUG
- -lsfml-audio-d
+ SFML_AUDIO
+ $(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX)
@@ -354,10 +397,7 @@ music.Play();
SharedSettings
- AUDIO_RELEASE
-
-
- AUDIO_DEBUG
+ SFML_AUDIO
@@ -399,11 +439,8 @@ music.Play();
SharedSettings
- NETWORK_RELEASE
- -lsfml-network
-
- NETWORK_DEBUG
- -lsfml-network-d
+ SFML_NETWORK
+ $(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX)
@@ -424,10 +461,7 @@ music.Play();
SharedSettings
- NETWORK_RELEASE
-
-
- NETWORK_DEBUG
+ SFML_NETWORK
@@ -554,13 +588,23 @@ while (window.IsOpened())
PRODUCT_NAME
$(TARGET_NAME)
- SYSTEM_RELEASE
- -lsfml-system
- SYSTEM_DEBUG
- -lsfml-system-d
-
- HEADER_SEARCH_PATHS
- $(HEADER_SEARCH_PATHS) /usr/local/include/
+ SFML_LINK_DYLIBS_PREFIX
+ -l
+
+ SFML_LINK_FRAMEWORKS_PREFIX
+ -framework
+
+ SFML_SYSTEM
+ $(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX)
+
+ SFML_LINK_FRAMEWORKS_SUFFIX
+
+
+ CLANG_ENABLE_OBJC_ARC
+
+
+ GCC_ENABLE_OBJC_GC
+ unsupported
Configurations
@@ -568,16 +612,22 @@ while (window.IsOpened())
Debug
+ SFML_LINK_DYLIBS_SUFFIX
+ -d
+
OTHER_LDFLAGS
-$(OTHER_LDFLAGS) $(SYSTEM_DEBUG) $(WINDOW_DEBUG) $(GRAPHICS_DEBUG) $(AUDIO_DEBUG) $(NETWORK_DEBUG)
+ $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)
Release
+ SFML_LINK_DYLIBS_SUFFIX
+
+
OTHER_LDFLAGS
-$(OTHER_LDFLAGS) $(SYSTEM_RELEASE) $(WINDOW_RELEASE) $(GRAPHICS_RELEASE) $(AUDIO_RELEASE) $(NETWORK_RELEASE)
+ $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)
diff --git a/xcode/templates/SFML Command Line Tool Base.xctemplate/cute_image.jpg b/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/cute_image.jpg
similarity index 100%
rename from xcode/templates/SFML Command Line Tool Base.xctemplate/cute_image.jpg
rename to xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/cute_image.jpg
diff --git a/xcode/templates/SFML Command Line Tool Base.xctemplate/nice_music.ogg b/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/nice_music.ogg
similarity index 100%
rename from xcode/templates/SFML Command Line Tool Base.xctemplate/nice_music.ogg
rename to xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/nice_music.ogg
diff --git a/xcode/templates/SFML Command Line Tool Base.xctemplate/sansation.ttf b/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/sansation.ttf
similarity index 100%
rename from xcode/templates/SFML Command Line Tool Base.xctemplate/sansation.ttf
rename to xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/sansation.ttf
diff --git a/xcode/templates/SFML Command Line Tool.xctemplate/TemplateIcon.icns b/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateIcon.icns
similarity index 100%
rename from xcode/templates/SFML Command Line Tool.xctemplate/TemplateIcon.icns
rename to xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateIcon.icns
diff --git a/xcode/templates/SFML Command Line Tool.xctemplate/TemplateInfo.plist b/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateInfo.plist
similarity index 100%
rename from xcode/templates/SFML Command Line Tool.xctemplate/TemplateInfo.plist
rename to xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateInfo.plist
diff --git a/xcode/templates/readme.txt b/xcode/templates/readme.txt
index ce2d4b30..ee41b9d6 100644
--- a/xcode/templates/readme.txt
+++ b/xcode/templates/readme.txt
@@ -1,43 +1,66 @@
XCODE 4 TEMPLATES
=================
-These are templates to create easily a new project in Xcode 4.
+These are templates to create easily a new SFML project in Xcode 4.
Features
--------
* You can choose between command line tool or bundle application.
- * You can select or not each module of SFML you'll use into your project.
- * A basic example is inserted automatically into your project's code.
+ * You can choose between using SFML libraries as dylibs or frameworks.
+ * You can add independently each SFML module you'll use into your project.
+ * A basic example is included automatically into your project's code.
Install
-------
-Copy the four folders into ~/Library/Developer/Xcode/Templates folder (you might need to create it first).
+If you are building SFML from sources you can set CMake's INSTALL_XCODE4_TEMPLATES variable to TRUE to install the templates automatically. Otherwise proceed as follow :
+ 1. Make sure "~/Library/Developer/Xcode/Templates/" folder exists;
+ 2. Copy "SFML" folder into the above folder.
Usage
-----
To use these templates follow these steps :
- * open Xcode 4,
- * select «create a new Xcode project» from the «Welcome to Xcode» window or select menu File > New > New Project,
- * select «Templates» under «Mac OS X»,
- * then select either «SFML Application» or «SFML Command Line Tool»,
- * fill in the requested information and you're done.
+ 1. open Xcode 4,
+ 2. select "create a new Xcode project" from the "Welcome to Xcode" window or select menus File > New > New Project,
+ 3. select "SFML" subsection under "Mac OS X",
+ 4. then select either "SFML Application" or "SFML Command Line Tool",
+ 5. fill in the requested information and you're done.
-Note
-----
+Question & Answer
+-----------------
-If you wish to add/remove any module of SFML from your project without rebuilding a new one follow these steps :
+ * I would like to add/remove a module of SFML from my current project without creating a new one. How can I do that ?
- * select your project from the project navigator panel (cmd+1),
- * select your project's target on the main area,
- * go to the «Build Settings» tab,
- * go down to the bottom,
- * edit any MODULEX_CONFIG variable (e.g. AUDIO_DEBUG, NETWORK_RELEASE) you want to.
+ 1. select your project from the project navigator panel,
+ 2. select your project's target on the main area,
+ 3. go to the "Build Settings" tab,
+ 4. go down to the bottom,
+ 5. set SFML_XXX variable, where XXX is the name of the module to add/remove to "$(SFML_LINK_PREFIX)sfml-XXX$(SFML_LINK_SUFFIX)" to add it or to "" (nothing) to remove it.
-Examples :
- * to disable the audio module simply erase the content of AUDIO_DEBUG and AUDIO_RELEASE.
- * to add the network module set NETWORK_DEBUG to '-lsfml-network-d' and NETWORK_RELEASE to '-lsfml-network'.
+ * I changed my mind and would like to switch from dylibs to frameworks or vice versa. How can I do that ?
+
+ 1. select your project from the project navigator panel,
+ 2. select your project's target on the main area,
+ 3. go to the "Build Settings" tab,
+ 4. go down to the bottom,
+ 5. update SFML_LINK_PREFIX and SFML_LINK_SUFFIX as follow :
+ * if you want to use frameworks, then
+ 1. set SFML_LINK_PREFIX to "$(SFML_LINK_FRAMEWORKS_PREFIX)",
+ 2. set SFML_LINK_SUFFIX to "$(SFML_LINK_FRAMEWORKS_SUFFIX)"
+ * if you want to use dylibs, then
+ 1. set SFML_LINK_PREFIX to "$(SFML_LINK_DYLIBS_PREFIX)",
+ 2. set SFML_LINK_SUFFIX to "$(SFML_LINK_DYLIBS_SUFFIX)"
+
+
+ * I want to use the static version of SFML. Is it possible ?
+
+ Short answer : Don't do that!
+
+ We strongly recommend you to use either dylibs or frameworks on Mac OS X. Please refer to Apple documentation for information about static vs shared libraries debate.
+
+ If you really need/want to use static libraries proceed as follow. First, set your project to use dylibs (see above Q & A). Then set SFML_LINK_DYLIBS_SUFFIX to "-s-d" in debug mode and to "-s" in release mode. Finally, remove the script automatically generated by the application template (see Build Phases tab).
+