Improve Xcode 4 templates (close #285)

This is a complete rewrite.
This commit is contained in:
Marco Antognini 2012-12-29 22:08:19 +01:00
parent e11ed81f72
commit b4941d0f9e
26 changed files with 1523 additions and 1719 deletions

View File

@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent.gom@gmail.com),
//
// This software is provided 'as-is', without any express or implied warranty.

View File

@ -1,7 +1,7 @@
////////////////////////////////////////////////////////////
//
// SFML - Simple and Fast Multimedia Library
// Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
// Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
// Laurent Gomila (laurent.gom@gmail.com),
//
// This software is provided 'as-is', without any express or implied warranty.
@ -34,17 +34,17 @@ std::string resourcePath(void)
{
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
std::string rpath;
NSBundle* bundle = [NSBundle mainBundle];
std::string rpath;
NSBundle* bundle = [NSBundle mainBundle];
if (bundle == nil) {
if (bundle == nil) {
#ifdef DEBUG
NSLog(@"bundle is nil... thus no resources path can be found.");
NSLog(@"bundle is nil... thus no resources path can be found.");
#endif
} else {
NSString* path = [bundle resourcePath];
rpath = [path UTF8String] + std::string("/");
}
} else {
NSString* path = [bundle resourcePath];
rpath = [path UTF8String] + std::string("/");
}
[pool drain];

View File

@ -0,0 +1,226 @@
<?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">
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
This template can create a SFML 2.0 Bundle Application project.
-->
<plist version="1.0">
<dict>
<!--
BASIC INFO
-->
<key>Identifier</key>
<string>org.sfml-dev.app</string>
<key>Concrete</key>
<true />
<key>Description</key>
<string>This template creates a SFML Application Bundle.</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Ancestors</key>
<array>
<string>org.sfml-dev.bundle</string>
<string>org.sfml-dev.compiler</string>
<string>org.sfml-dev.linker</string>
</array>
<!--
FILES
-->
<key>Nodes</key>
<array>
<string>ResourcePath.mm</string>
<string>ResourcePath.hpp</string>
<string>main.cpp</string>
<string>cute_image.jpg</string>
<string>nice_music.ogg</string>
<string>sansation.ttf</string>
<string>icon.png</string>
</array>
<!--
DEFINITIONS
-->
<key>Definitions</key>
<dict>
<!-- RESOURCE PATH -->
<key>ResourcePath.mm</key>
<dict>
<key>Path</key>
<string>ResourcePath.mm</string>
</dict>
<key>ResourcePath.hpp</key>
<dict>
<key>Path</key>
<string>ResourcePath.hpp</string>
<key>TargetIndices</key>
<array /> <!-- don't copy it to "Resources" ! -->
</dict>
<!-- MAIN -->
<key>main.cpp</key>
<dict>
<key>Path</key>
<string>main.cpp</string>
</dict>
<!-- RESOURCES -->
<key>cute_image.jpg</key>
<dict>
<key>Path</key>
<string>cute_image.jpg</string>
<key>Group</key>
<string>Resources</string>
</dict>
<key>nice_music.ogg</key>
<dict>
<key>Path</key>
<string>nice_music.ogg</string>
<key>Group</key>
<string>Resources</string>
</dict>
<key>sansation.ttf</key>
<dict>
<key>Path</key>
<string>sansation.ttf</string>
<key>Group</key>
<string>Resources</string>
</dict>
<key>icon.png</key>
<dict>
<key>Path</key>
<string>icon.png</string>
<key>Group</key>
<string>Resources</string>
</dict>
</dict>
<!--
COPY LIBRARY PHASE
-->
<key>Targets</key>
<array>
<dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>ShellScript</string>
<key>ShellPath</key>
<string>/bin/sh</string>
<key>ShellScript</key>
<string># 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 ?
case "$SFML_BINARY_TYPE" in
DYLIBS)
frameworks="false"
;;
*)
frameworks="true"
;;
esac
require () # $1 is a SFML module like 'system' or 'audio'
{
dest="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Frameworks"
if [ -z "$1" ]
then
echo "no parameter! ERROR!"
exit
else
# clean potentially old stuff
rm -f "$dest/libsfml-$1.2.dylib"
rm -f "$dest/libsfml-$1-d.2.dylib"
rm -fr "$dest/sfml-$1.framework"
# copy SFML libraries
if [ "$frameworks" = "true" ]
then
ditto "/Library/Frameworks/sfml-$1.framework" "$dest/sfml-$1.framework"
elif [ $CONFIGURATION = "Debug" ] &amp;&amp; [ $SFML_LINK_DYLIBS_SUFFIX_DEBUG != "" ]
then
ditto "/usr/local/lib/libsfml-$1-d.2.dylib" "$dest/libsfml-$1-d.2.dylib"
else
ditto "/usr/local/lib/libsfml-$1.2.dylib" "$dest/libsfml-$1.2.dylib"
fi
if [ "$1" = "audio" ]
then
# copy sndfile framework too
ditto "/Library/Frameworks/sndfile.framework" "$dest/sndfile.framework"
fi
fi
}
if [ -n "$SFML_SYSTEM" ]
then
require "system"
fi
if [ -n "$SFML_AUDIO" ]
then
require "audio"
fi
if [ -n "$SFML_NETWORK" ]
then
require "network"
fi
if [ -n "$SFML_WINDOW" ]
then
require "window"
fi
if [ -n "$SFML_GRAPHICS" ]
then
require "graphics"
fi
</string>
<key>RunOnlyForDeploymentPostprocessing</key>
<string>NO</string>
</dict>
</array>
</dict>
</array>
</dict>
</plist>

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,91 @@
//
// Disclamer:
// ----------
//
// This code will work only if you selected window, graphics and audio.
//
// Note that the "Run Script" build phase will copy the required frameworks
// or dylibs to your application bundle so you can execute it on any OS X
// computer.
//
// Your resource files (images, sounds, fonts, ...) are also copied to your
// application bundle. To get the path to these resource, use the helper
// method resourcePath() from ResourcePath.hpp
//
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
// Here is a small helper for you ! Have a look.
#include "ResourcePath.hpp"
int main(int, char const**)
{
// Create the main window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
// Set the Icon
sf::Image icon;
if (!icon.loadFromFile(resourcePath() + "icon.png")) {
return EXIT_FAILURE;
}
window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
// Load a sprite to display
sf::Texture texture;
if (!texture.loadFromFile(resourcePath() + "cute_image.jpg")) {
return EXIT_FAILURE;
}
sf::Sprite sprite(texture);
// Create a graphical text to display
sf::Font font;
if (!font.loadFromFile(resourcePath() + "sansation.ttf")) {
return EXIT_FAILURE;
}
sf::Text text("Hello SFML", font, 50);
text.setColor(sf::Color::Black);
// Load a music to play
sf::Music music;
if (!music.openFromFile(resourcePath() + "nice_music.ogg")) {
return EXIT_FAILURE;
}
// Play the music
music.play();
// Start the game loop
while (window.isOpen())
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window : exit
if (event.type == sf::Event::Closed) {
window.close();
}
// Espace pressed : exit
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
window.close();
}
}
// Clear screen
window.clear();
// Draw the sprite
window.draw(sprite);
// Draw the string
window.draw(text);
// Update the window
window.display();
}
return EXIT_SUCCESS;
}

View File

@ -1,797 +0,0 @@
<?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>
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
###########################################################################
*************************** org.sfml-dev.AppBase template *****************
###########################################################################
-->
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Identifier</key>
<string>org.sfml-dev.AppBase</string>
<key>Ancestors</key>
<array>
<string>com.apple.dt.unit.macBase</string>
</array>
<!-- ############################################################### Options -->
<key>Options</key>
<array>
<!-- ****************************************** Framework option -->
<dict>
<key>Identifier</key>
<string>useFrameworks</string>
<key>Name</key>
<string>Use frameworks</string>
<key>Description</key>
<string>Indicates whether frameworks should be used instead of dylibs or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>FRAMEWORKS</string>
<key>SFML_LINK_DYLIBS_SUFFIX_DEBUG</key>
<string></string>
</dict>
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>DYLIBS</string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- ******************************************* Use debug dylib -->
<dict>
<key>Identifier</key>
<string>useDebug</string>
<key>Name</key>
<string>Use debug dylibs in debug mode</string>
<key>Description</key>
<string>Checking this setting requires the use of dylibs instead of frameworks. It will link the project against the debug version of SFML when you build your project for debugging. It is recommended to leave this unchecked.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>false</string>
<key>RequiredOptions</key>
<dict>
<key>useFrameworks</key>
<string>false</string>
</dict>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX_DEBUG</key>
<string>-d</string>
</dict>
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX_DEBUG</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- ********************************************* Window Module -->
<dict>
<key>Identifier</key>
<string>windowModule</string>
<key>Name</key>
<string>Use window module</string>
<key>Description</key>
<string>Indicates whether window module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_WINDOW</key>
<string>$(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:window:include</key>
<string>#include &lt;SFML/Window.hpp&gt;</string>
<key>main.cpp:main:window:content</key>
<string>sf::Window window(sf::VideoMode(800, 600), "SFML window");</string>
<!-- erase system/audio module content -->
<key>main.cpp:system:include</key>
<string></string>
<key>main.cpp:main:audio_loop</key>
<string></string>
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_WINDOW</key>
<string></string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:window:include</key>
<string></string>
<key>main.cpp:main:window:content</key>
<string></string>
<!-- erase main loop & display -->
<key>main.cpp:main:event_loop</key>
<string></string>
<key>main.cpp:main:display</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
<!-- ******************************************* Graphics Module -->
<dict>
<key>Identifier</key>
<string>graphicsModule</string>
<key>RequiredOptions</key>
<dict>
<key>windowModule</key>
<string>true</string>
</dict>
<key>Name</key>
<string>Use graphics module</string>
<key>Description</key>
<string>Indicates whether graphics module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_GRAPHICS</key>
<string>$(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:graphics:include</key>
<string>#include &lt;SFML/Graphics.hpp&gt;</string>
<key>main.cpp:main:graphics_init_window</key>
<string>// Create the main window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
</string>
<key>main.cpp:main:image_init</key>
<string>
// Load a sprite to display
sf::Texture texture;
</string>
<key>main.cpp:main:image_finalize</key>
<string> return EXIT_FAILURE;
sf::Sprite sprite(texture);
</string>
<key>main.cpp:main:image_load</key>
<string>if (!texture.loadFromFile(resourcePath() + "cute_image.jpg"))</string>
<key>main.cpp:main:text_init</key>
<string>
// Create a graphical text to display
sf::Font font;
</string>
<key>main.cpp:main:text_finalize</key>
<string> return EXIT_FAILURE;
sf::Text text("Hello SFML", font, 50);
text.setColor(sf::Color::Black);
</string>
<key>main.cpp:main:text_load</key>
<string>if (!font.loadFromFile(resourcePath() + "sansation.ttf"))</string>
<key>main.cpp:main:graphics_display</key>
<string>
// Clear screen
window.clear();
// Draw the sprite
window.draw(sprite);
// Draw the string
window.draw(text);
</string>
<!-- erase window module content -->
<key>main.cpp:window:include</key>
<string></string>
<key>main.cpp:main:window:content</key>
<string></string>
<key>sansation.ttf</key>
<dict>
<key>Group</key>
<string>Resources</string>
<key>Path</key>
<string>sansation.ttf</string>
</dict>
<key>cute_image.jpg</key>
<dict>
<key>Group</key>
<string>Resources</string>
<key>Path</key>
<string>cute_image.jpg</string>
</dict>
</dict>
<!-- resources -->
<key>Nodes</key>
<array>
<string>sansation.ttf</string>
<string>cute_image.jpg</string>
</array>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_GRAPHICS</key>
<string></string>
</dict>
</dict>
<!-- content definition : none -->
<key>Definitions</key>
<dict>
<key>main.cpp:graphics:include</key>
<string></string>
<key>main.cpp:main:graphics_init</key>
<string></string>
<key>main.cpp:main:graphics_display</key>
<string></string>
<key>main.cpp:main:image_load</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
<!-- ********************************************** Audio Module -->
<dict>
<key>Identifier</key>
<string>audioModule</string>
<key>Name</key>
<string>Use audio module</string>
<key>Description</key>
<string>Indicates whether audio module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_AUDIO</key>
<string>$(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:audio:include</key>
<string>#include &lt;SFML/Audio.hpp&gt;</string>
<key>main.cpp:main:audio:content</key>
<string>
// Load a music to play
sf::Music music;
if (!music.openFromFile(resourcePath() + "nice_music.ogg"))
return EXIT_FAILURE;
// Play the music
music.play();
</string>
<key>nice_music.ogg</key>
<dict>
<key>Group</key>
<string>Resources</string>
<key>Path</key>
<string>nice_music.ogg</string>
</dict>
</dict>
<!-- resources -->
<key>Nodes</key>
<array>
<string>nice_music.ogg</string>
</array>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_AUDIO</key>
<string></string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:audio:include</key>
<string></string>
<key>main.cpp:main:audio:content</key>
<string></string>
<key>main.cpp:main:audio_loop</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
<!-- ******************************************** Network Module -->
<dict>
<key>Identifier</key>
<string>networkModule</string>
<key>Name</key>
<string>Use network module</string>
<key>Description</key>
<string>Indicates whether network module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_NETWORK</key>
<string>$(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:network:include</key>
<string>#include &lt;SFML/Network.hpp&gt;</string>
<!-- no content example for network -->
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_NETWORK</key>
<string></string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:network:include</key>
<string></string>
<!-- no content example for network -->
</dict>
</dict>
</dict>
</dict>
</array>
<!-- ################################################################# Nodes -->
<key>Nodes</key>
<array>
<string>main.cpp:system:include</string>
<string>main.cpp:window:include</string>
<string>main.cpp:graphics:include</string>
<string>main.cpp:audio:include</string>
<string>main.cpp:network:include</string>
<string>main.cpp:resources:include</string>
<string>main.cpp:main:window:content</string>
<string>main.cpp:main:graphics_init_window</string>
<string>main.cpp:main:image_init</string>
<string>main.cpp:main:image_load</string>
<string>main.cpp:main:image_finalize</string>
<string>main.cpp:main:text_init</string>
<string>main.cpp:main:text_load</string>
<string>main.cpp:main:text_finalize</string>
<string>main.cpp:main:audio:content</string>
<string>main.cpp:main:audio_loop</string>
<string>main.cpp:main:event_loop</string>
<string>main.cpp:main:graphics_display</string>
<string>main.cpp:main:display</string>
<string>ResourcePath.mm</string>
<string>ResourcePath.hpp</string>
</array>
<!-- ########################################################### Definitions -->
<key>Definitions</key>
<dict>
<!-- main function -->
<key>*:main</key>
<dict>
<key>Beginning</key>
<string>
int main (int argc, const char * argv[])
{</string>
<key>End</key>
<string>
return EXIT_SUCCESS;
}</string>
<key>Indent</key>
<integer>1</integer>
</dict>
<key>ResourcePath.mm</key>
<dict>
<key>Path</key>
<string>ResourcePath.mm</string>
</dict>
<key>ResourcePath.hpp</key>
<dict>
<key>Path</key>
<string>ResourcePath.hpp</string>
<key>TargetIndices</key>
<array/>
</dict>
<key>main.cpp:system:include</key>
<string>#include &lt;SFML/System.hpp&gt;</string>
<key>main.cpp:main:event_loop</key>
<string>
// Start the game loop
while (window.isOpen())
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window : exit
if (event.type == sf::Event::Closed)
window.close();
// Escape pressed : exit
if (event.type == sf::Event::KeyPressed &amp;&amp; event.key.code == sf::Keyboard::Escape)
window.close();
}
</string>
<key>main.cpp:main:display</key>
<string>
// Update the window
window.display();
}
</string>
<key>main.cpp:resources:include</key>
<string>#include "ResourcePath.hpp"</string>
<key>main.cpp:main:audio_loop</key>
<string>while (music.getStatus() == sf::Music::Playing) {
sf::sleep(sf::microseconds(100));
}</string>
</dict>
<!-- ###################################################### Project Settings -->
<key>Project</key>
<dict>
<!-- *************************************************** Basic stuff -->
<key>Name</key>
<string>___PACKAGENAME___</string>
<!-- *********************************************** Shared Settings -->
<key>SharedSettings</key>
<dict>
<key>PRODUCT_NAME</key>
<string>$(TARGET_NAME)</string>
<key>SFML_LINK_DYLIBS_PREFIX</key>
<string>-l</string>
<key>SFML_LINK_FRAMEWORKS_PREFIX</key>
<string>-framework </string>
<key>SFML_SYSTEM</key>
<string>$(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX)</string>
<key>SFML_LINK_FRAMEWORKS_SUFFIX</key>
<string></string>
<key>SFML_LINK_PREFIX</key>
<string>$(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX)</string>
<key>SFML_LINK_SUFFIX</key>
<string>$(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX)</string>
<key>CLANG_ENABLE_OBJC_ARC</key>
<string></string>
<key>GCC_ENABLE_OBJC_GC</key>
<string>unsupported</string>
<key>FRAMEWORK_SEARCH_PATHS</key>
<string>$(FRAMEWORK_SEARCH_PATHS) /Library/Frameworks/**</string>
<key>HEADER_SEARCH_PATHS</key>
<string>$(HEADER_SEARCH_PATHS) /usr/local/include/**</string>
<key>LIBRARY_SEARCH_PATHS</key>
<string>$(LIBRARY_SEARCH_PATHS) /usr/local/lib/**</string>
</dict>
<key>Configurations</key>
<dict>
<!-- ***************************************************** Debug -->
<key>Debug</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string>$(SFML_LINK_DYLIBS_SUFFIX_DEBUG)</string>
<key>OTHER_LDFLAGS</key>
<string>$(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)</string>
</dict>
<!-- *************************************************** Release -->
<key>Release</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string></string>
<key>OTHER_LDFLAGS</key>
<string>$(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)</string>
</dict>
</dict>
</dict>
<key>Targets</key>
<array>
<dict>
<key>Frameworks</key>
<array>
<string>Foundation</string>
</array>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>ShellScript</string>
<key>ShellPath</key>
<string>/bin/sh</string>
<key>ShellScript</key>
<string># 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 ?
case "$SFML_BINARY_TYPE" in
DYLIBS)
frameworks="false"
;;
*)
frameworks="true"
;;
esac
require () # $1 is a SFML module like 'system' or 'audio'
{
dest="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/Contents/Frameworks"
if [ -z "$1" ]
then
echo "no parameter! ERROR!"
exit
else
# clean potentially old stuff
rm -f "$dest/libsfml-$1.2.dylib"
rm -f "$dest/libsfml-$1-d.2.dylib"
rm -fr "$dest/sfml-$1.framework"
# copy SFML libraries
if [ "$frameworks" = "true" ]
then
ditto "/Library/Frameworks/sfml-$1.framework" "$dest/sfml-$1.framework"
elif [ $CONFIGURATION = "Debug" ] &amp;&amp; [ $SFML_LINK_DYLIBS_SUFFIX_DEBUG != "" ]
then
ditto "/usr/local/lib/libsfml-$1-d.2.dylib" "$dest/libsfml-$1-d.2.dylib"
else
ditto "/usr/local/lib/libsfml-$1.2.dylib" "$dest/libsfml-$1.2.dylib"
fi
if [ "$1" = "audio" ]
then
# copy sndfile framework too
ditto "/Library/Frameworks/sndfile.framework" "$dest/sndfile.framework"
fi
fi
}
if [ -n "$SFML_SYSTEM" ]
then
require "system"
fi
if [ -n "$SFML_AUDIO" ]
then
require "audio"
fi
if [ -n "$SFML_NETWORK" ]
then
require "network"
fi
if [ -n "$SFML_WINDOW" ]
then
require "window"
fi
if [ -n "$SFML_GRAPHICS" ]
then
require "graphics"
fi
</string>
<key>RunOnlyForDeploymentPostprocessing</key>
<string>NO</string>
</dict>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -1,127 +0,0 @@
<?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>
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
###########################################################################
******************************** org.sfml-dev.app template ****************
###########################################################################
-->
<!-- *** Ancestors Hierarchy *** -->
<key>Ancestors</key>
<array>
<string>org.sfml-dev.AppBase</string>
<string>com.apple.dt.unit.bundleBase</string>
</array>
<!-- *** This is a Concrete Template *** -->
<key>Concrete</key>
<true/>
<!-- *** Basic Stuff *** -->
<key>Description</key>
<string>This template builds bundle application using SFML.</string>
<key>Identifier</key>
<string>org.sfml-dev.app</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Nodes</key>
<array>
<string>___PACKAGENAME___-Info.plist:Basics</string>
</array>
<key>Definitions</key>
<dict>
<key>___PACKAGENAME___-Info.plist:Basics</key>
<string>&lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
&lt;string&gt;en&lt;/string&gt;
&lt;key&gt;CFBundleExecutable&lt;/key&gt;
&lt;string&gt;${EXECUTABLE_NAME}&lt;/string&gt;
&lt;key&gt;CFBundleIconFile&lt;/key&gt;
&lt;string&gt;&lt;/string&gt;
&lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
&lt;string&gt;6.0&lt;/string&gt;
&lt;key&gt;CFBundleName&lt;/key&gt;
&lt;string&gt;${PRODUCT_NAME}&lt;/string&gt;
&lt;key&gt;CFBundlePackageType&lt;/key&gt;
&lt;string&gt;APPL&lt;/string&gt;
&lt;key&gt;CFBundleSignature&lt;/key&gt;
&lt;string&gt;????&lt;/string&gt;
</string>
</dict>
<!-- *** Project's Targets *** -->
<key>Targets</key>
<array>
<dict>
<key>ProductType</key>
<string>com.apple.product-type.application</string>
<key>SharedSettings</key>
<dict>
<key>WRAPPER_EXTENSION</key>
<string>app</string>
<key>GCC_PRECOMPILE_PREFIX_HEADER</key>
<string>NO</string>
<key>GCC_PREFIX_HEADER</key>
<string></string>
</dict>
<key>Configurations</key>
<dict>
<key>Debug</key>
<dict>
<key>COPY_PHASE_STRIP</key>
<string>NO</string>
<key>GCC_DYNAMIC_NO_PIC</key>
<string>NO</string>
</dict>
<key>Release</key>
<dict>
<key>COPY_PHASE_STRIP</key>
<string>YES</string>
</dict>
</dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>Sources</string>
</dict>
<dict>
<key>Class</key>
<string>Frameworks</string>
</dict>
<dict>
<key>Class</key>
<string>Resources</string>
</dict>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,116 @@
<?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">
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
This template defines :
- the product name
- the organization name
- the bundle prefix
-->
<plist version="1.0">
<dict>
<!--
BASIC INFO
-->
<key>Identifier</key>
<string>org.sfml-dev.base</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Platforms</key>
<array>
<string>com.apple.platform.macosx</string>
</array>
<!--
OPTIONS
-->
<key>Options</key>
<array>
<dict>
<key>Identifier</key>
<string>productName</string>
<key>Required</key>
<true />
<key>Name</key>
<string>Product Name</string>
<key>NotPersisted</key>
<true />
<key>Description</key>
<string>Your new product&apos;s name</string>
<key>EmptyReplacement</key>
<string>ProductName</string>
<key>Type</key>
<string>text</string>
</dict>
<dict>
<key>Identifier</key>
<string>organizationName</string>
<key>Name</key>
<string>Organization Name</string>
<key>Description</key>
<string>Your company&apos;s name</string>
<key>Type</key>
<string>text</string>
<key>Default</key>
<string>___FULLUSERNAME___</string>
</dict>
<dict>
<key>Identifier</key>
<string>bundleIdentifierPrefix</string>
<key>Required</key>
<true />
<key>Name</key>
<string>Company Identifier</string>
<key>Description</key>
<string>Your company&apos;s bundle identifier prefix</string>
<key>EmptyReplacement</key>
<string>com.yourcompany</string>
<key>Type</key>
<string>text</string>
</dict>
<dict>
<key>Identifier</key>
<string>bundleIdentifier</string>
<key>Name</key>
<string>Bundle Identifier</string>
<key>NotPersisted</key>
<true />
<key>Description</key>
<string>Your new product&apos;s bundle identifier</string>
<key>Default</key>
<string>___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.___VARIABLE_productName:RFC1034Identifier___</string>
<key>Type</key>
<string>static</string>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,132 @@
<?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">
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
This template defines :
- the bundle properties (plist)
- the target type (.app)
- the build phases
-->
<plist version="1.0">
<dict>
<!--
BASIC INFO
-->
<key>Identifier</key>
<string>org.sfml-dev.bundle</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Ancestors</key>
<array>
<string>org.sfml-dev.base</string>
</array>
<!--
FILES
-->
<key>Nodes</key>
<array>
<string>___PACKAGENAME___-Info.plist:Content</string>
</array>
<!--
DEFINITIONS
-->
<key>Definitions</key>
<dict>
<key>___PACKAGENAME___-Info.plist:Content</key> <!-- TODO add more fields here -->
<string>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;
&lt;plist version=&quot;1.0&quot;&gt;
&lt;dict&gt;
&lt;key&gt;CFBundleIdentifier&lt;/key&gt;
&lt;string&gt;___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.${PRODUCT_NAME:rfc1034identifier}&lt;/string&gt;
&lt;key&gt;CFBundleDevelopmentRegion&lt;/key&gt;
&lt;string&gt;en&lt;/string&gt;
&lt;key&gt;CFBundleExecutable&lt;/key&gt;
&lt;string&gt;${EXECUTABLE_NAME}&lt;/string&gt;
&lt;key&gt;CFBundleIconFile&lt;/key&gt;
&lt;string&gt;&lt;/string&gt;
&lt;key&gt;CFBundleInfoDictionaryVersion&lt;/key&gt;
&lt;string&gt;6.0&lt;/string&gt;
&lt;key&gt;CFBundleName&lt;/key&gt;
&lt;string&gt;${PRODUCT_NAME}&lt;/string&gt;
&lt;key&gt;CFBundlePackageType&lt;/key&gt;
&lt;string&gt;APPL&lt;/string&gt;
&lt;key&gt;CFBundleSignature&lt;/key&gt;
&lt;string&gt;????&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</string>
<key>___PACKAGENAME___-Info.plist</key>
<dict>
<key>Group</key>
<string>Supporting Files</string>
<key>TargetIndices</key>
<array />
<key>SubstituteMacros</key>
<true />
</dict>
</dict>
<!--
TARGET
-->
<key>Targets</key>
<array>
<dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>Sources</string>
</dict>
<dict>
<key>Class</key>
<string>Frameworks</string>
</dict>
<dict>
<key>Class</key>
<string>Resources</string>
</dict>
</array>
<key>ProductType</key>
<string>com.apple.product-type.application</string>
<key>SharedSettings</key>
<dict>
<key>INFOPLIST_FILE</key>
<string>___PACKAGENAME___/___PACKAGENAME___-Info.plist</string>
</dict>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,137 @@
<?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">
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
This template can create a SFML 2.0 Command Line Tool project.
-->
<plist version="1.0">
<dict>
<!--
BASIC INFO
-->
<key>Identifier</key>
<string>org.sfml-dev.clt</string>
<key>Concrete</key>
<true />
<key>Description</key>
<string>This template creates a SFML Command Line Tool.</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Ancestors</key>
<array>
<string>org.sfml-dev.base</string>
<string>org.sfml-dev.compiler</string>
<string>org.sfml-dev.linker</string>
</array>
<!--
FILES
-->
<key>Nodes</key>
<array>
<string>main.cpp</string>
<string>cute_image.jpg</string>
<string>nice_music.ogg</string>
<string>sansation.ttf</string>
<string>icon.png</string>
</array>
<!--
DEFINITIONS
-->
<key>Definitions</key>
<dict>
<!-- MAIN -->
<key>main.cpp</key>
<dict>
<key>Path</key>
<string>main.cpp</string>
</dict>
<!-- RESOURCES -->
<key>cute_image.jpg</key>
<dict>
<key>Path</key>
<string>cute_image.jpg</string>
<key>Group</key>
<string>Resources</string>
</dict>
<key>nice_music.ogg</key>
<dict>
<key>Path</key>
<string>nice_music.ogg</string>
<key>Group</key>
<string>Resources</string>
</dict>
<key>sansation.ttf</key>
<dict>
<key>Path</key>
<string>sansation.ttf</string>
<key>Group</key>
<string>Resources</string>
</dict>
<key>icon.png</key>
<dict>
<key>Path</key>
<string>icon.png</string>
<key>Group</key>
<string>Resources</string>
</dict>
</dict>
<!--
TARGET
-->
<key>Targets</key>
<array>
<dict>
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>Sources</string>
</dict>
<dict>
<key>Class</key>
<string>Frameworks</string>
</dict>
</array>
<key>ProductType</key>
<string>com.apple.product-type.tool</string>
</dict>
</array>
</dict>
</plist>

View File

Before

Width:  |  Height:  |  Size: 140 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,89 @@
//
// Disclamer:
// ----------
//
// This code will work only if you selected window, graphics and audio.
//
// In order to load the resources like cute_image.png, you have to set up
// your target scheme :
//
// - Select "Edit Scheme…" in the "Product" menu;
// - Check the box "use custom working directory";
// - Fill the text field with the folder path containing your resources;
// (e.g. your project folder)
// - Click OK.
//
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
int main(int argc, char const** argv)
{
// Create the main window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
// Set the Icon
sf::Image icon;
if (!icon.loadFromFile("icon.png")) {
return EXIT_FAILURE;
}
window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
// Load a sprite to display
sf::Texture texture;
if (!texture.loadFromFile("cute_image.jpg")) {
return EXIT_FAILURE;
}
sf::Sprite sprite(texture);
// Create a graphical text to display
sf::Font font;
if (!font.loadFromFile("sansation.ttf")) {
return EXIT_FAILURE;
}
sf::Text text("Hello SFML", font, 50);
text.setColor(sf::Color::Black);
// Load a music to play
sf::Music music;
if (!music.openFromFile("nice_music.ogg")) {
return EXIT_FAILURE;
}
// Play the music
music.play();
// Start the game loop
while (window.isOpen())
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window : exit
if (event.type == sf::Event::Closed) {
window.close();
}
// Espace pressed : exit
if (event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape) {
window.close();
}
}
// Clear screen
window.clear();
// Draw the sprite
window.draw(sprite);
// Draw the string
window.draw(text);
// Update the window
window.display();
}
return EXIT_SUCCESS;
}

View File

@ -1,696 +0,0 @@
<?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>
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
###########################################################################
******************* org.sfml-dev.commandLineToolBase template *************
###########################################################################
-->
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<key>Identifier</key>
<string>org.sfml-dev.commandLineToolBase</string>
<key>Ancestors</key>
<array>
<string>com.apple.dt.unit.macBase</string>
</array>
<!-- ############################################################### Options -->
<key>Options</key>
<array>
<!-- ****************************************** Framework option -->
<dict>
<key>Identifier</key>
<string>useFrameworks</string>
<key>Name</key>
<string>Use frameworks</string>
<key>Description</key>
<string>Indicates whether frameworks should be used instead of dylibs or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>FRAMEWORKS</string>
<key>SFML_LINK_DYLIBS_SUFFIX_DEBUG</key>
<string></string>
</dict>
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>DYLIBS</string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- ******************************************* Use debug dylib -->
<dict>
<key>Identifier</key>
<string>useDebug</string>
<key>Name</key>
<string>Use debug dylibs in debug mode</string>
<key>Description</key>
<string>Checking this setting requires the use of dylibs instead of frameworks. It will link the project against the debug version of SFML when you build your project for debugging. It is recommended to leave this unchecked.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>false</string>
<key>RequiredOptions</key>
<dict>
<key>useFrameworks</key>
<string>false</string>
</dict>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX_DEBUG</key>
<string>-d</string>
</dict>
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX_DEBUG</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- ********************************************* Window Module -->
<dict>
<key>Identifier</key>
<string>windowModule</string>
<key>Name</key>
<string>Use window module</string>
<key>Description</key>
<string>Indicates whether window module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_WINDOW</key>
<string>$(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:window:include</key>
<string>#include &lt;SFML/Window.hpp&gt;</string>
<key>main.cpp:main:window:content</key>
<string>sf::Window window(sf::VideoMode(800, 600), "SFML window");</string>
<!-- erase system/audio module content -->
<key>main.cpp:system:include</key>
<string></string>
<key>main.cpp:main:audio_loop</key>
<string></string>
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_WINDOW</key>
<string></string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:window:include</key>
<string></string>
<key>main.cpp:main:window:content</key>
<string></string>
<!-- erase main loop & display -->
<key>main.cpp:main:event_loop</key>
<string></string>
<key>main.cpp:main:display</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
<!-- ******************************************* Graphics Module -->
<dict>
<key>Identifier</key>
<string>graphicsModule</string>
<key>RequiredOptions</key>
<dict>
<key>windowModule</key>
<string>true</string>
</dict>
<key>Name</key>
<string>Use graphics module</string>
<key>Description</key>
<string>Indicates whether graphics module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_GRAPHICS</key>
<string>$(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:graphics:include</key>
<string>#include &lt;SFML/Graphics.hpp&gt;</string>
<key>main.cpp:main:graphics_init_window</key>
<string>// Create the main window
sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
</string>
<key>main.cpp:main:image_init</key>
<string>
// Load a sprite to display
sf::Texture texture;
</string>
<key>main.cpp:main:image_finalize</key>
<string> return EXIT_FAILURE;
sf::Sprite sprite(texture);
</string>
<key>main.cpp:main:image_load</key>
<string>if (!texture.loadFromFile("cute_image.jpg"))</string>
<key>main.cpp:main:text_init</key>
<string>
// Create a graphical text to display
sf::Font font;
</string>
<key>main.cpp:main:text_finalize</key>
<string> return EXIT_FAILURE;
sf::Text text("Hello SFML", font, 50);
text.setColor(sf::Color::Black);
</string>
<key>main.cpp:main:text_load</key>
<string>if (!font.loadFromFile("sansation.ttf"))</string>
<key>main.cpp:main:graphics_display</key>
<string>
// Clear screen
window.clear();
// Draw the sprite
window.draw(sprite);
// Draw the string
window.draw(text);
</string>
<!-- erase window module content -->
<key>main.cpp:window:include</key>
<string></string>
<key>main.cpp:main:window:content</key>
<string></string>
<key>sansation.ttf</key>
<dict>
<key>Group</key>
<string>Supporting Files</string>
<key>Path</key>
<string>sansation.ttf</string>
</dict>
<key>cute_image.jpg</key>
<dict>
<key>Group</key>
<string>Supporting Files</string>
<key>Path</key>
<string>cute_image.jpg</string>
</dict>
</dict>
<!-- resources -->
<key>Nodes</key>
<array>
<string>sansation.ttf</string>
<string>cute_image.jpg</string>
</array>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_GRAPHICS</key>
<string></string>
</dict>
</dict>
<!-- content definition : none -->
<key>Definitions</key>
<dict>
<key>main.cpp:graphics:include</key>
<string></string>
<key>main.cpp:main:graphics_init</key>
<string></string>
<key>main.cpp:main:graphics_display</key>
<string></string>
<key>main.cpp:main:image_load</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
<!-- ********************************************** Audio Module -->
<dict>
<key>Identifier</key>
<string>audioModule</string>
<key>Name</key>
<string>Use audio module</string>
<key>Description</key>
<string>Indicates whether audio module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_AUDIO</key>
<string>$(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:audio:include</key>
<string>#include &lt;SFML/Audio.hpp&gt;</string>
<key>main.cpp:main:audio:content</key>
<string>
// Load a music to play
sf::Music music;
if (!music.openFromFile("nice_music.ogg"))
return EXIT_FAILURE;
// Play the music
music.play();
</string>
<key>nice_music.ogg</key>
<dict>
<key>Group</key>
<string>Supporting Files</string>
<key>Path</key>
<string>nice_music.ogg</string>
</dict>
</dict>
<!-- resources -->
<key>Nodes</key>
<array>
<string>nice_music.ogg</string>
</array>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_AUDIO</key>
<string></string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:audio:include</key>
<string></string>
<key>main.cpp:main:audio:content</key>
<string></string>
<key>main.cpp:main:audio_loop</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
<!-- ******************************************** Network Module -->
<dict>
<key>Identifier</key>
<string>networkModule</string>
<key>Name</key>
<string>Use network module</string>
<key>Description</key>
<string>Indicates whether network module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>SortOrder</key>
<integer>1</integer>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- ON -->
<key>true</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_NETWORK</key>
<string>$(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:network:include</key>
<string>#include &lt;SFML/Network.hpp&gt;</string>
<!-- no content example for network -->
</dict>
</dict>
<!-- OFF -->
<key>false</key>
<dict>
<!-- compilation options -->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_NETWORK</key>
<string></string>
</dict>
</dict>
<!-- content definition -->
<key>Definitions</key>
<dict>
<key>main.cpp:network:include</key>
<string></string>
<!-- no content example for network -->
</dict>
</dict>
</dict>
</dict>
</array>
<!-- ################################################################# Nodes -->
<key>Nodes</key>
<array>
<string>main.cpp:system:include</string>
<string>main.cpp:window:include</string>
<string>main.cpp:graphics:include</string>
<string>main.cpp:audio:include</string>
<string>main.cpp:network:include</string>
<string>main.cpp:resources_comment</string>
<string>main.cpp:main:window:content</string>
<string>main.cpp:main:graphics_init_window</string>
<string>main.cpp:main:image_init</string>
<string>main.cpp:main:image_load</string>
<string>main.cpp:main:image_finalize</string>
<string>main.cpp:main:text_init</string>
<string>main.cpp:main:text_load</string>
<string>main.cpp:main:text_finalize</string>
<string>main.cpp:main:audio:content</string>
<string>main.cpp:main:audio_loop</string>
<string>main.cpp:main:event_loop</string>
<string>main.cpp:main:graphics_display</string>
<string>main.cpp:main:display</string>
</array>
<!-- ########################################################### Definitions -->
<key>Definitions</key>
<dict>
<!-- main function -->
<key>*:main</key>
<dict>
<key>Beginning</key>
<string>
int main (int argc, const char * argv[])
{</string>
<key>End</key>
<string>
return EXIT_SUCCESS;
}</string>
<key>Indent</key>
<integer>1</integer>
</dict>
<key>main.cpp:system:include</key>
<string>#include &lt;SFML/System.hpp&gt;</string>
<key>main.cpp:main:event_loop</key>
<string>
// Start the game loop
while (window.isOpen())
{
// Process events
sf::Event event;
while (window.pollEvent(event))
{
// Close window : exit
if (event.type == sf::Event::Closed)
window.close();
// Escape pressed : exit
if (event.type == sf::Event::KeyPressed &amp;&amp; event.key.code == sf::Keyboard::Escape)
window.close();
}
</string>
<key>main.cpp:main:display</key>
<string>
// Update the window
window.display();
}
</string>
<key>main.cpp:resources_comment</key>
<string>
/* Resources :
* ===========
*
* In order to load the resources like cute_image.png, you have to set up
* your target scheme :
*
* - Select "Edit Scheme…" in the "Product" menu;
* - Check the box "use custom working directory";
* - Fill the text field with the folder path containing your resources;
* (e.g. your project folder)
* - Click OK.
*/
</string>
<key>main.cpp:main:audio_loop</key>
<string>while (music.getStatus() == sf::Music::Playing) {
sf::sleep(sf::microseconds(100));
}</string>
</dict>
<!-- ###################################################### Project Settings -->
<key>Project</key>
<dict>
<!-- *************************************************** Basic stuff -->
<key>Name</key>
<string>___PACKAGENAME___</string>
<!-- *********************************************** Shared Settings -->
<key>SharedSettings</key>
<dict>
<key>PRODUCT_NAME</key>
<string>$(TARGET_NAME)</string>
<key>SFML_LINK_DYLIBS_PREFIX</key>
<string>-l</string>
<key>SFML_LINK_FRAMEWORKS_PREFIX</key>
<string>-framework </string>
<key>SFML_SYSTEM</key>
<string>$(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX)</string>
<key>SFML_LINK_FRAMEWORKS_SUFFIX</key>
<string></string>
<key>SFML_LINK_PREFIX</key>
<string>$(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX)</string>
<key>SFML_LINK_SUFFIX</key>
<string>$(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX)</string>
<key>CLANG_ENABLE_OBJC_ARC</key>
<string></string>
<key>GCC_ENABLE_OBJC_GC</key>
<string>unsupported</string>
<key>FRAMEWORK_SEARCH_PATHS</key>
<string>$(FRAMEWORK_SEARCH_PATHS) /Library/Frameworks/**</string>
<key>HEADER_SEARCH_PATHS</key>
<string>$(HEADER_SEARCH_PATHS) /usr/local/include/**</string>
<key>LIBRARY_SEARCH_PATHS</key>
<string>$(LIBRARY_SEARCH_PATHS) /usr/local/lib/**</string>
</dict>
<key>Configurations</key>
<dict>
<!-- ***************************************************** Debug -->
<key>Debug</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string>$(SFML_LINK_DYLIBS_SUFFIX_DEBUG)</string>
<key>OTHER_LDFLAGS</key>
<string>$(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)</string>
</dict>
<!-- *************************************************** Release -->
<key>Release</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string></string>
<key>OTHER_LDFLAGS</key>
<string>$(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)</string>
</dict>
</dict>
</dict>
</dict>
</plist>

View File

@ -1,74 +0,0 @@
<?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>
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2012 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
###########################################################################
*********************** org.sfml-dev.commandLineTool template *************
###########################################################################
-->
<!-- *** Ancestors Hierarchy *** -->
<key>Ancestors</key>
<array>
<string>org.sfml-dev.commandLineToolBase</string>
<string>com.apple.dt.unit.base</string>
</array>
<!-- *** This is a Concrete Template *** -->
<key>Concrete</key>
<true/>
<!-- *** Basic Stuff *** -->
<key>Description</key>
<string>This template builds a command-line tool using SFML.</string>
<key>Identifier</key>
<string>org.sfml-dev.commandLineTool</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<!-- *** Project's Targets *** -->
<key>Targets</key>
<array>
<dict>
<!-- *** Basic Stuff *** -->
<key>BuildPhases</key>
<array>
<dict>
<key>Class</key>
<string>Sources</string>
</dict>
<dict>
<key>Class</key>
<string>Frameworks</string>
</dict>
</array>
<key>ProductType</key>
<string>com.apple.product-type.tool</string>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,275 @@
<?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">
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
This template defines :
- the compiler & std lib
- the supported arch
- some other target's settings (e.g. warnings flags)
- the search paths
-->
<plist version="1.0">
<dict>
<!--
BASIC INFO
-->
<key>Identifier</key>
<string>org.sfml-dev.compiler</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<!--
OPTIONS
-->
<key>Options</key>
<array>
<dict>
<key>Identifier</key>
<string>compilerSettingsType</string>
<key>Name</key>
<string>[ADVANCED] C++ Compiler and Standard Library</string>
<key>Description</key>
<string>If you don't know what is it about, use the default value. Note that you'll need a version of SFML compiled with Clang and libc++ to use C++11 !</string>
<key>Default</key>
<string>C++98 with Clang and libstdc++</string>
<key>NotPersisted</key>
<true />
<key>Type</key>
<string>popup</string>
<key>Units</key>
<dict>
<!-- Use GCC and libstdc++ -->
<key>C++98 with GCC and libstdc++</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>GCC_VERSION</key>
<string>com.apple.compilers.llvmgcc42</string>
</dict>
</dict>
</dict>
<!-- Use Clang and libstdc++ -->
<key>C++98 with Clang and libstdc++</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>GCC_VERSION</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>CLANG_CXX_LANGUAGE_STANDARD</key>
<string>c++98</string>
<key>CLANG_CXX_LIBRARY</key>
<string>libstdc++</string>
</dict>
</dict>
</dict>
<!-- Use Clang and libc++ -->
<key>C++11 with Clang and libc++</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>GCC_VERSION</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>CLANG_CXX_LANGUAGE_STANDARD</key>
<string>c++0x</string>
<key>CLANG_CXX_LIBRARY</key>
<string>libc++</string>
</dict>
</dict>
</dict>
</dict>
</dict>
<dict>
<key>Identifier</key>
<string>archType</string>
<key>Name</key>
<string>[ADVANCED] Architectures</string>
<key>Description</key>
<string>Choose which architecture(s) you want to support</string>
<key>Default</key>
<string>Universal</string>
<key>NotPersisted</key>
<true />
<key>Type</key>
<string>popup</string>
<key>Units</key>
<dict>
<!-- Support 32 + 64 bits -->
<key>Universal</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>ARCHS</key>
<string>$(ARCHS_STANDARD_32_64_BIT)</string>
</dict>
</dict>
</dict>
<!-- Support 64 bits -->
<key>64 bits</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>ARCHS</key>
<string>$(ARCHS_STANDARD_64_BIT)</string>
</dict>
</dict>
</dict>
<!-- Support 32 bits -->
<key>32 bits</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>ARCHS</key>
<string>$(ARCHS_STANDARD_32_BIT)</string>
</dict>
</dict>
</dict>
</dict>
</dict>
</array>
<!--
SETTINGS
-->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict
<!-- PLATFORM -->
<key>SUPPORTED_PLATFORMS</key>
<string>macosx</string>
<!-- WARNINGS -->
<!-- TODO add more warnings -->
<key>GCC_WARN_ABOUT_RETURN_TYPE</key>
<string>YES</string>
<key>GCC_WARN_UNINITIALIZED_AUTOS</key>
<string>YES</string>
<key>GCC_WARN_UNUSED_VARIABLE</key>
<string>YES</string>
<key>CLANG_WARN__DUPLICATE_METHOD_MATCH</key>
<string>YES</string>
<key>CLANG_WARN_EMPTY_BODY</key>
<string>YES</string>
<!-- SERACH PATHS -->
<key>FRAMEWORK_SEARCH_PATHS</key>
<string> /Library/Frameworks/ $(inherited) </string>
<key>HEADER_SEARCH_PATHS</key>
<string> /usr/local/include/ $(inherited) </string>
<key>LIBRARY_SEARCH_PATHS</key>
<string> /usr/local/lib/ $(inherited) </string>
</dict>
<key>Configurations</key>
<dict>
<key>Debug</key>
<dict>
<key>GCC_OPTIMIZATION_LEVEL</key>
<string>0</string>
<key>GCC_PREPROCESSOR_DEFINITIONS</key>
<string>DEBUG=1 $(inherited)</string>
<!-- Don't compile all arch in debug -->
<key>ONLY_ACTIVE_ARCH</key>
<string>YES</string>
</dict>
<key>Release</key>
<dict>
<key>COPY_PHASE_STRIP</key>
<string>YES</string>
<!-- Compile all arch in release -->
<key>ONLY_ACTIVE_ARCH</key>
<string>NO</string>
</dict>
</dict>
</dict>
<!--
TARGET
-->
<key>Targets</key>
<array>
<dict>
<key>Name</key>
<string>___PACKAGENAME___</string>
<key>SharedSettings</key>
<dict>
<key>PRODUCT_NAME</key>
<string>$(TARGET_NAME)</string>
</dict>
<key>Configurations</key>
<dict>
<key>Debug</key>
<dict />
<key>Release</key>
<dict />
</dict>
</dict>
</array>
</dict>
</plist>

View File

@ -0,0 +1,363 @@
<?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">
<!--
SFML - Simple and Fast Multimedia Library
Copyright (C) 2007-2013 Marco Antognini (antognini.marco@gmail.com),
Laurent Gomila (laurent.gom@gmail.com),
This software is provided 'as-is', without any express or implied warranty.
In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it freely,
subject to the following restrictions:
1. The origin of this software must not be misrepresented;
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is not required.
2. Altered source versions must be plainly marked as such,
and must not be misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
-->
<!--
This template defines :
- whether the project uses dylibs or frameworks
- which modules are used
- how the project links against those modules
-->
<plist version="1.0">
<dict>
<!--
BASIC INFO
-->
<key>Identifier</key>
<string>org.sfml-dev.linker</string>
<key>Kind</key>
<string>Xcode.Xcode3.ProjectTemplateUnitKind</string>
<!--
OPTIONS
-->
<key>Options</key>
<array>
<!-- BINARY TYPE -->
<dict>
<key>Identifier</key>
<string>binaryType</string>
<key>Name</key>
<string>[ADVANCED] SFML binaries</string>
<key>Description</key>
<string>Choose between dylibs and frameworks. If you're not sure, keep the default value.</string>
<key>Default</key>
<string>Frameworks</string>
<key>NotPersisted</key>
<true />
<key>Type</key>
<string>popup</string>
<key>Units</key>
<dict>
<!-- Use frameworks -->
<key>Frameworks</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>FRAMEWORKS</string>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string></string>
</dict>
</dict>
</dict>
<!-- Use dylibs -->
<key>Dylibs</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>DYLIBS</string>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string></string>
</dict>
</dict>
</dict>
<!-- Use dylibs (debug) -->
<key>Dylibs (debug)</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_BINARY_TYPE</key>
<string>DYLIBS</string>
</dict>
<key>Configurations</key>
<dict>
<key>Debug</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string>-d</string>
</dict>
<key>Release</key>
<dict>
<key>SFML_LINK_DYLIBS_SUFFIX</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- WINDOW MODULE -->
<dict>
<key>Identifier</key>
<string>windowModule</string>
<key>Name</key>
<string>Use window module</string>
<key>Description</key>
<string>Indicates whether window module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- WINDOW MODULE : YES -->
<key>true</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_WINDOW</key>
<string>$(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
</dict>
<!-- WINDOW MODULE : NO -->
<key>false</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_WINDOW</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- GRAPHICS MODULE -->
<dict>
<key>Identifier</key>
<string>graphicsModule</string>
<key>Name</key>
<string>Use graphics module</string>
<key>Description</key>
<string>Indicates whether graphics module should be used or not.</string>
<key>RequiredOptions</key>
<dict>
<key>windowModule</key>
<string>true</string>
</dict>
<key>Type</key>
<string>checkbox</string>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- GRAPHICS MODULE : YES -->
<key>true</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_GRAPHICS</key>
<string>$(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
</dict>
<!-- GRAPHICS MODULE : NO -->
<key>false</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_GRAPHICS</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- AUDIO MODULE -->
<dict>
<key>Identifier</key>
<string>audioModule</string>
<key>Name</key>
<string>Use audio module</string>
<key>Description</key>
<string>Indicates whether audio module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- AUDIO MODULE : YES -->
<key>true</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_AUDIO</key>
<string>$(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
</dict>
<!-- AUDIO MODULE : NO -->
<key>false</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_AUDIO</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
<!-- NETWORK MODULE -->
<dict>
<key>Identifier</key>
<string>networkModule</string>
<key>Name</key>
<string>Use network module</string>
<key>Description</key>
<string>Indicates whether network module should be used or not.</string>
<key>Type</key>
<string>checkbox</string>
<key>Default</key>
<string>true</string>
<key>Units</key>
<dict>
<!-- NETWORK MODULE : YES -->
<key>true</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_NETWORK</key>
<string>$(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX)</string>
</dict>
</dict>
</dict>
<!-- NETWORK MODULE : NO -->
<key>false</key>
<dict>
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<key>SFML_NETWORK</key>
<string></string>
</dict>
</dict>
</dict>
</dict>
</dict>
</array>
<!--
SETTINGS
-->
<key>Project</key>
<dict>
<key>SharedSettings</key>
<dict>
<!-- Define some prefixes and suffixes -->
<key>SFML_LINK_DYLIBS_PREFIX</key>
<string>-l</string>
<key>SFML_LINK_FRAMEWORKS_PREFIX</key>
<string>-framework </string>
<key>SFML_LINK_FRAMEWORKS_SUFFIX</key>
<string></string>
<key>SFML_LINK_PREFIX</key>
<string>$(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX)</string>
<key>SFML_LINK_SUFFIX</key>
<string>$(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX)</string>
<!-- SFML SYSTEM : always used -->
<key>SFML_SYSTEM</key>
<string>$(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX)</string>
<!-- LINKER FLAGS -->
<key>OTHER_LDFLAGS</key>
<string>$(inherited) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK)</string>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,6 @@
#!/bin/sh
# Install SFML templates for Xcode 4 into /Library/Developer/Xcode/Templates/
mkdir -p /Library/Developer/Xcode/Templates/
cp -R "$(dirname $0)/SFML" /Library/Developer/Xcode/Templates/

View File

@ -1,15 +1,49 @@
XCODE 4 TEMPLATES
=================
These are templates to create easily a new SFML project in Xcode 4.
XCODE 4 TEMPLATES FOR SFML 2
============================
These templates help you to easily create a new SFML 2 project for Xcode 4.
Web Site
--------
You can find more resources and information on the official web site : http://www.sfml-dev.org/
Author & License
----------------
The templates were written by Marco Antognini <antognini.marco@gmail.com> and are provided under the terms of the zlib/png license : http://opensource.org/licenses/zlib-license.php
Features
--------
* You can choose between command line tool or bundle application.
* 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.
* You can choose your compiler and C++ standard library / dialect.
* You can choose with SFML module you want to use into your project.
* You automatically get a basic example to test SFML right away.
Prerequisites
-------------
Before installing the template, make sure you have installed :
- Xcode 4 (the templates were tested with Xcode 4.5.2)
- SFML 2, either as framework or dylibs binaries
There is one constraint on the installation of SFML : the frameworks needs to be installed in /Library/Frameworks and the dylibs into /usr/local/lib. You don't need both but make sure they are in the correct folder.
You should also be familiar with Xcode 4. If needed checkout this document : http://developer.apple.com/library/ios/#documentation/ToolsLanguages/Conceptual/Xcode4UserGuide/000-About_Xcode/about.html
Install
-------
@ -17,6 +51,9 @@ Install
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.
The 'install.sh' script in the same directory as this readme does that for you.
Usage
-----
@ -25,29 +62,47 @@ To use these templates follow these steps :
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.
3. select "SFML" subsection under "Mac OS X" on the left,
4. then select either "SFML App", if you want an application bundle, or "SFML CLT", if you prefer a classic Unix executable,
5. fill in the requested information and you're ready to go !
Note : some settings are marked as "[ADVANCED]" in the wizard. If you're not sure what they are, simply keep the default settings. If you get errors later you would probably want to explore their meaning.
Question & Answer
-----------------
* I would like to add/remove a module of SFML from my current project without creating a new one. How can I do that ?
* I want to use Xcode 3. Can I use these templates anyway ?
1. select your project from the project navigator panel,
No, Xcode 3 and 4 don't have the same template system. Therefore these templates won't work with a older version of Xcode.
* I'm still using SFML 1.6. Can I use these templates anyway ?
No, these templates were made for SFML 2 only.
* I would like to add/remove a module of SFML from my current project without creating a new project. How can I do that ?
1. select your project in 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.
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.
* 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,
1. select your project in 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_BINARY_TYPE either to "DYLIBS" or "FRAMEWORKS".
5. set SFML_BINARY_TYPE to either "DYLIBS" or "FRAMEWORKS".
* How to use/don't use debug dylibs ?
@ -58,7 +113,8 @@ Question & Answer
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_LINK_DYLIBS_SUFFIX_DEBUG to "-d" to use them or to "" (empty string) to use only release binary.
5. set SFML_LINK_DYLIBS_SUFFIX_DEBUG to "-d" to use them or to "" (empty string) to use only release binaries.
* I want to use the static version of SFML. Is it possible ?
@ -67,5 +123,12 @@ Question & Answer
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).
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 template (see Build Phases tab).
* I get strange linker error about std::string and other STL types. What shall I do ?
This probably means you're compiling your project against a different implementation of the STL than SFML. When you created the project, you might have chosen the wrong C++ compiler & standard library. You can update your project's build settings; more specifically the Compiler for C/C++/Objective-C, the C++ language Dialect and the C++ Standard Library. You can find more information in the getting started tutorial for Mac OS X on the official web site.