From b4941d0f9ebb331df2f24b29eb1e92bed8863e6a Mon Sep 17 00:00:00 2001 From: Marco Antognini Date: Sat, 29 Dec 2012 22:08:19 +0100 Subject: [PATCH] Improve Xcode 4 templates (close #285) This is a complete rewrite. --- .../ResourcePath.hpp | 2 +- .../ResourcePath.mm | 18 +- .../TemplateIcon.icns | Bin .../SFML App.xctemplate/TemplateInfo.plist | 226 +++++ .../cute_image.jpg | Bin .../SFML/SFML App.xctemplate/icon.png | Bin 0 -> 61926 bytes .../SFML/SFML App.xctemplate/main.cpp | 91 ++ .../nice_music.ogg | Bin .../sansation.ttf | Bin .../TemplateInfo.plist | 797 ------------------ .../TemplateInfo.plist | 127 --- .../SFML Base.xctemplate/TemplateInfo.plist | 116 +++ .../SFML Bundle.xctemplate/TemplateInfo.plist | 132 +++ .../TemplateIcon.icns | Bin .../SFML CLT.xctemplate/TemplateInfo.plist | 137 +++ .../cute_image.jpg | Bin .../SFML/SFML CLT.xctemplate/icon.png | Bin 0 -> 61926 bytes .../SFML/SFML CLT.xctemplate/main.cpp | 89 ++ .../nice_music.ogg | Bin .../sansation.ttf | Bin .../TemplateInfo.plist | 696 --------------- .../TemplateInfo.plist | 74 -- .../TemplateInfo.plist | 275 ++++++ .../SFML Linker.xctemplate/TemplateInfo.plist | 363 ++++++++ tools/xcode/templates/install.sh | 6 + tools/xcode/templates/readme.txt | 93 +- 26 files changed, 1523 insertions(+), 1719 deletions(-) rename tools/xcode/templates/SFML/{SFML Application Base.xctemplate => SFML App.xctemplate}/ResourcePath.hpp (96%) rename tools/xcode/templates/SFML/{SFML Application Base.xctemplate => SFML App.xctemplate}/ResourcePath.mm (81%) rename tools/xcode/templates/SFML/{SFML Application.xctemplate => SFML App.xctemplate}/TemplateIcon.icns (100%) create mode 100644 tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist rename tools/xcode/templates/SFML/{SFML Application Base.xctemplate => SFML App.xctemplate}/cute_image.jpg (100%) create mode 100644 tools/xcode/templates/SFML/SFML App.xctemplate/icon.png create mode 100644 tools/xcode/templates/SFML/SFML App.xctemplate/main.cpp rename tools/xcode/templates/SFML/{SFML Application Base.xctemplate => SFML App.xctemplate}/nice_music.ogg (100%) rename tools/xcode/templates/SFML/{SFML Application Base.xctemplate => SFML App.xctemplate}/sansation.ttf (100%) delete mode 100644 tools/xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist delete mode 100644 tools/xcode/templates/SFML/SFML Application.xctemplate/TemplateInfo.plist create mode 100644 tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist create mode 100644 tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist rename tools/xcode/templates/SFML/{SFML Command Line Tool.xctemplate => SFML CLT.xctemplate}/TemplateIcon.icns (100%) create mode 100644 tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist rename tools/xcode/templates/SFML/{SFML Command Line Tool Base.xctemplate => SFML CLT.xctemplate}/cute_image.jpg (100%) create mode 100644 tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.png create mode 100644 tools/xcode/templates/SFML/SFML CLT.xctemplate/main.cpp rename tools/xcode/templates/SFML/{SFML Command Line Tool Base.xctemplate => SFML CLT.xctemplate}/nice_music.ogg (100%) rename tools/xcode/templates/SFML/{SFML Command Line Tool Base.xctemplate => SFML CLT.xctemplate}/sansation.ttf (100%) delete mode 100644 tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist delete mode 100644 tools/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateInfo.plist create mode 100644 tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist create mode 100644 tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist create mode 100755 tools/xcode/templates/install.sh diff --git a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.hpp b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp similarity index 96% rename from tools/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.hpp rename to tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp index f8a66b267..10e8c60a5 100644 --- a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.hpp +++ b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.hpp @@ -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. diff --git a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.mm b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm similarity index 81% rename from tools/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.mm rename to tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm index 74c315b39..30d47c14b 100644 --- a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/ResourcePath.mm +++ b/tools/xcode/templates/SFML/SFML App.xctemplate/ResourcePath.mm @@ -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]; diff --git a/tools/xcode/templates/SFML/SFML Application.xctemplate/TemplateIcon.icns b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateIcon.icns similarity index 100% rename from tools/xcode/templates/SFML/SFML Application.xctemplate/TemplateIcon.icns rename to tools/xcode/templates/SFML/SFML App.xctemplate/TemplateIcon.icns diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist new file mode 100644 index 000000000..098bc37fc --- /dev/null +++ b/tools/xcode/templates/SFML/SFML App.xctemplate/TemplateInfo.plist @@ -0,0 +1,226 @@ + + + + + + + + + + + Identifier + org.sfml-dev.app + + Concrete + + + Description + This template creates a SFML Application Bundle. + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + + Ancestors + + org.sfml-dev.bundle + org.sfml-dev.compiler + org.sfml-dev.linker + + + + Nodes + + ResourcePath.mm + ResourcePath.hpp + main.cpp + cute_image.jpg + nice_music.ogg + sansation.ttf + icon.png + + + + Definitions + + + ResourcePath.mm + + Path + ResourcePath.mm + + ResourcePath.hpp + + Path + ResourcePath.hpp + TargetIndices + + + + + main.cpp + + Path + main.cpp + + + + cute_image.jpg + + Path + cute_image.jpg + Group + Resources + + + nice_music.ogg + + Path + nice_music.ogg + Group + Resources + + + sansation.ttf + + Path + sansation.ttf + Group + Resources + + + icon.png + + Path + icon.png + Group + Resources + + + + + Targets + + + BuildPhases + + + Class + ShellScript + + ShellPath + /bin/sh + + ShellScript + # 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" ] && [ $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 + + + + RunOnlyForDeploymentPostprocessing + NO + + + + + + + diff --git a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/cute_image.jpg b/tools/xcode/templates/SFML/SFML App.xctemplate/cute_image.jpg similarity index 100% rename from tools/xcode/templates/SFML/SFML Application Base.xctemplate/cute_image.jpg rename to tools/xcode/templates/SFML/SFML App.xctemplate/cute_image.jpg diff --git a/tools/xcode/templates/SFML/SFML App.xctemplate/icon.png b/tools/xcode/templates/SFML/SFML App.xctemplate/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ef62688de76b0b73bdad53056068f5cc8322ba03 GIT binary patch literal 61926 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 +#include + +// 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; +} diff --git a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/nice_music.ogg b/tools/xcode/templates/SFML/SFML App.xctemplate/nice_music.ogg similarity index 100% rename from tools/xcode/templates/SFML/SFML Application Base.xctemplate/nice_music.ogg rename to tools/xcode/templates/SFML/SFML App.xctemplate/nice_music.ogg diff --git a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/sansation.ttf b/tools/xcode/templates/SFML/SFML App.xctemplate/sansation.ttf similarity index 100% rename from tools/xcode/templates/SFML/SFML Application Base.xctemplate/sansation.ttf rename to tools/xcode/templates/SFML/SFML App.xctemplate/sansation.ttf diff --git a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist deleted file mode 100644 index 23ed4e7f2..000000000 --- a/tools/xcode/templates/SFML/SFML Application Base.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,797 +0,0 @@ - - - - - - - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Identifier - org.sfml-dev.AppBase - - Ancestors - - com.apple.dt.unit.macBase - - - - Options - - - - Identifier - useFrameworks - Name - Use frameworks - Description - Indicates whether frameworks should be used instead of dylibs or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_BINARY_TYPE - FRAMEWORKS - - SFML_LINK_DYLIBS_SUFFIX_DEBUG - - - - - - false - - - Project - - SharedSettings - - SFML_BINARY_TYPE - DYLIBS - - - - - - - - - - Identifier - useDebug - Name - Use debug dylibs in debug mode - Description - 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. - Type - checkbox - SortOrder - 1 - Default - false - RequiredOptions - - useFrameworks - false - - Units - - - true - - - Project - - SharedSettings - - SFML_LINK_DYLIBS_SUFFIX_DEBUG - -d - - - - - - false - - - Project - - SharedSettings - - SFML_LINK_DYLIBS_SUFFIX_DEBUG - - - - - - - - - - - Identifier - windowModule - Name - Use window module - Description - Indicates whether window module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_WINDOW - $(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:window:include - #include <SFML/Window.hpp> - - main.cpp:main:window:content - sf::Window window(sf::VideoMode(800, 600), "SFML window"); - - - main.cpp:system:include - - - main.cpp:main:audio_loop - - - - - false - - - Project - - SharedSettings - - SFML_WINDOW - - - - - - Definitions - - main.cpp:window:include - - - main.cpp:main:window:content - - - - main.cpp:main:event_loop - - - main.cpp:main:display - - - - - - - - - - Identifier - graphicsModule - RequiredOptions - - windowModule - true - - Name - Use graphics module - Description - Indicates whether graphics module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_GRAPHICS - $(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:graphics:include - #include <SFML/Graphics.hpp> - - main.cpp:main:graphics_init_window - // Create the main window -sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window"); - - - main.cpp:main:image_init - -// Load a sprite to display -sf::Texture texture; - - - main.cpp:main:image_finalize - return EXIT_FAILURE; -sf::Sprite sprite(texture); - - - main.cpp:main:image_load - if (!texture.loadFromFile(resourcePath() + "cute_image.jpg")) - - main.cpp:main:text_init - -// Create a graphical text to display -sf::Font font; - - - main.cpp:main:text_finalize - return EXIT_FAILURE; -sf::Text text("Hello SFML", font, 50); -text.setColor(sf::Color::Black); - - - main.cpp:main:text_load - if (!font.loadFromFile(resourcePath() + "sansation.ttf")) - - main.cpp:main:graphics_display - - // Clear screen - window.clear(); - - // Draw the sprite - window.draw(sprite); - - // Draw the string - window.draw(text); - - - - main.cpp:window:include - - - main.cpp:main:window:content - - - sansation.ttf - - Group - Resources - Path - sansation.ttf - - - cute_image.jpg - - Group - Resources - Path - cute_image.jpg - - - - - Nodes - - sansation.ttf - cute_image.jpg - - - - false - - - Project - - SharedSettings - - SFML_GRAPHICS - - - - - - Definitions - - main.cpp:graphics:include - - - main.cpp:main:graphics_init - - - main.cpp:main:graphics_display - - - main.cpp:main:image_load - - - - - - - - - Identifier - audioModule - Name - Use audio module - Description - Indicates whether audio module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_AUDIO - $(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:audio:include - #include <SFML/Audio.hpp> - - main.cpp:main:audio:content - -// Load a music to play -sf::Music music; -if (!music.openFromFile(resourcePath() + "nice_music.ogg")) - return EXIT_FAILURE; - -// Play the music -music.play(); - - nice_music.ogg - - Group - Resources - Path - nice_music.ogg - - - - - Nodes - - nice_music.ogg - - - - false - - - Project - - SharedSettings - - SFML_AUDIO - - - - - - Definitions - - main.cpp:audio:include - - - main.cpp:main:audio:content - - - main.cpp:main:audio_loop - - - - - - - - - Identifier - networkModule - Name - Use network module - Description - Indicates whether network module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_NETWORK - $(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:network:include - #include <SFML/Network.hpp> - - - - - - false - - - Project - - SharedSettings - - SFML_NETWORK - - - - - - Definitions - - main.cpp:network:include - - - - - - - - - - - - Nodes - - main.cpp:system:include - main.cpp:window:include - main.cpp:graphics:include - main.cpp:audio:include - main.cpp:network:include - main.cpp:resources:include - main.cpp:main:window:content - main.cpp:main:graphics_init_window - main.cpp:main:image_init - main.cpp:main:image_load - main.cpp:main:image_finalize - main.cpp:main:text_init - main.cpp:main:text_load - main.cpp:main:text_finalize - main.cpp:main:audio:content - main.cpp:main:audio_loop - main.cpp:main:event_loop - main.cpp:main:graphics_display - main.cpp:main:display - ResourcePath.mm - ResourcePath.hpp - - - - - Definitions - - - *:main - - Beginning - -int main (int argc, const char * argv[]) -{ - End - - return EXIT_SUCCESS; -} - Indent - 1 - - - ResourcePath.mm - - Path - ResourcePath.mm - - - ResourcePath.hpp - - Path - ResourcePath.hpp - TargetIndices - - - - main.cpp:system:include - #include <SFML/System.hpp> - - main.cpp:main:event_loop - -// 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 && event.key.code == sf::Keyboard::Escape) - window.close(); - } - - - main.cpp:main:display - - // Update the window - window.display(); -} - - - main.cpp:resources:include - #include "ResourcePath.hpp" - - main.cpp:main:audio_loop - while (music.getStatus() == sf::Music::Playing) { - sf::sleep(sf::microseconds(100)); -} - - - - - Project - - - Name - ___PACKAGENAME___ - - - SharedSettings - - PRODUCT_NAME - $(TARGET_NAME) - - SFML_LINK_DYLIBS_PREFIX - -l - - SFML_LINK_FRAMEWORKS_PREFIX - -framework - - SFML_SYSTEM - $(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX) - - SFML_LINK_FRAMEWORKS_SUFFIX - - - SFML_LINK_PREFIX - $(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX) - - SFML_LINK_SUFFIX - $(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX) - - CLANG_ENABLE_OBJC_ARC - - - GCC_ENABLE_OBJC_GC - unsupported - - FRAMEWORK_SEARCH_PATHS - $(FRAMEWORK_SEARCH_PATHS) /Library/Frameworks/** - - HEADER_SEARCH_PATHS - $(HEADER_SEARCH_PATHS) /usr/local/include/** - - LIBRARY_SEARCH_PATHS - $(LIBRARY_SEARCH_PATHS) /usr/local/lib/** - - - Configurations - - - Debug - - SFML_LINK_DYLIBS_SUFFIX - $(SFML_LINK_DYLIBS_SUFFIX_DEBUG) - - OTHER_LDFLAGS - $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK) - - - - - Release - - SFML_LINK_DYLIBS_SUFFIX - - - OTHER_LDFLAGS - $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK) - - - - - Targets - - - Frameworks - - Foundation - - - BuildPhases - - - Class - ShellScript - - ShellPath - /bin/sh - - ShellScript - # 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" ] && [ $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 - - - - RunOnlyForDeploymentPostprocessing - NO - - - - - - diff --git a/tools/xcode/templates/SFML/SFML Application.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Application.xctemplate/TemplateInfo.plist deleted file mode 100644 index 885950173..000000000 --- a/tools/xcode/templates/SFML/SFML Application.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - Ancestors - - org.sfml-dev.AppBase - com.apple.dt.unit.bundleBase - - - - Concrete - - - - Description - This template builds bundle application using SFML. - Identifier - org.sfml-dev.app - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - - Nodes - - ___PACKAGENAME___-Info.plist:Basics - - - Definitions - - ___PACKAGENAME___-Info.plist:Basics - <key>CFBundleDevelopmentRegion</key> -<string>en</string> -<key>CFBundleExecutable</key> -<string>${EXECUTABLE_NAME}</string> -<key>CFBundleIconFile</key> -<string></string> -<key>CFBundleInfoDictionaryVersion</key> -<string>6.0</string> -<key>CFBundleName</key> -<string>${PRODUCT_NAME}</string> -<key>CFBundlePackageType</key> -<string>APPL</string> -<key>CFBundleSignature</key> -<string>????</string> - - - - - Targets - - - ProductType - com.apple.product-type.application - SharedSettings - - WRAPPER_EXTENSION - app - - GCC_PRECOMPILE_PREFIX_HEADER - NO - - GCC_PREFIX_HEADER - - - Configurations - - Debug - - COPY_PHASE_STRIP - NO - GCC_DYNAMIC_NO_PIC - NO - - Release - - COPY_PHASE_STRIP - YES - - - BuildPhases - - - Class - Sources - - - Class - Frameworks - - - Class - Resources - - - - - - diff --git a/tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist new file mode 100644 index 000000000..13fab2a6f --- /dev/null +++ b/tools/xcode/templates/SFML/SFML Base.xctemplate/TemplateInfo.plist @@ -0,0 +1,116 @@ + + + + + + + + + + + Identifier + org.sfml-dev.base + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + + Platforms + + com.apple.platform.macosx + + + + Options + + + Identifier + productName + Required + + Name + Product Name + NotPersisted + + Description + Your new product's name + EmptyReplacement + ProductName + Type + text + + + + Identifier + organizationName + Name + Organization Name + Description + Your company's name + Type + text + Default + ___FULLUSERNAME___ + + + + Identifier + bundleIdentifierPrefix + Required + + Name + Company Identifier + Description + Your company's bundle identifier prefix + EmptyReplacement + com.yourcompany + Type + text + + + + Identifier + bundleIdentifier + Name + Bundle Identifier + NotPersisted + + Description + Your new product's bundle identifier + Default + ___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.___VARIABLE_productName:RFC1034Identifier___ + Type + static + + + + diff --git a/tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist new file mode 100644 index 000000000..48138a70a --- /dev/null +++ b/tools/xcode/templates/SFML/SFML Bundle.xctemplate/TemplateInfo.plist @@ -0,0 +1,132 @@ + + + + + + + + + + + Identifier + org.sfml-dev.bundle + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + + Ancestors + + org.sfml-dev.base + + + + Nodes + + ___PACKAGENAME___-Info.plist:Content + + + + Definitions + + ___PACKAGENAME___-Info.plist:Content + <?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleIdentifier</key> + <string>___VARIABLE_bundleIdentifierPrefix:bundleIdentifier___.${PRODUCT_NAME:rfc1034identifier}</string> + <key>CFBundleDevelopmentRegion</key> + <string>en</string> + <key>CFBundleExecutable</key> + <string>${EXECUTABLE_NAME}</string> + <key>CFBundleIconFile</key> + <string></string> + <key>CFBundleInfoDictionaryVersion</key> + <string>6.0</string> + <key>CFBundleName</key> + <string>${PRODUCT_NAME}</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleSignature</key> + <string>????</string> +</dict> +</plist> + + + ___PACKAGENAME___-Info.plist + + Group + Supporting Files + TargetIndices + + SubstituteMacros + + + + + + Targets + + + BuildPhases + + + Class + Sources + + + Class + Frameworks + + + Class + Resources + + + + ProductType + com.apple.product-type.application + + SharedSettings + + INFOPLIST_FILE + ___PACKAGENAME___/___PACKAGENAME___-Info.plist + + + + + diff --git a/tools/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateIcon.icns b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateIcon.icns similarity index 100% rename from tools/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateIcon.icns rename to tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateIcon.icns diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist new file mode 100644 index 000000000..2c481f772 --- /dev/null +++ b/tools/xcode/templates/SFML/SFML CLT.xctemplate/TemplateInfo.plist @@ -0,0 +1,137 @@ + + + + + + + + + + + Identifier + org.sfml-dev.clt + + Concrete + + + Description + This template creates a SFML Command Line Tool. + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + + Ancestors + + org.sfml-dev.base + org.sfml-dev.compiler + org.sfml-dev.linker + + + + Nodes + + main.cpp + cute_image.jpg + nice_music.ogg + sansation.ttf + icon.png + + + + Definitions + + + main.cpp + + Path + main.cpp + + + + cute_image.jpg + + Path + cute_image.jpg + Group + Resources + + + nice_music.ogg + + Path + nice_music.ogg + Group + Resources + + + sansation.ttf + + Path + sansation.ttf + Group + Resources + + + icon.png + + Path + icon.png + Group + Resources + + + + + Targets + + + BuildPhases + + + Class + Sources + + + Class + Frameworks + + + + ProductType + com.apple.product-type.tool + + + + + diff --git a/tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/cute_image.jpg b/tools/xcode/templates/SFML/SFML CLT.xctemplate/cute_image.jpg similarity index 100% rename from tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/cute_image.jpg rename to tools/xcode/templates/SFML/SFML CLT.xctemplate/cute_image.jpg diff --git a/tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.png b/tools/xcode/templates/SFML/SFML CLT.xctemplate/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ef62688de76b0b73bdad53056068f5cc8322ba03 GIT binary patch literal 61926 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 +#include + +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; +} diff --git a/tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/nice_music.ogg b/tools/xcode/templates/SFML/SFML CLT.xctemplate/nice_music.ogg similarity index 100% rename from tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/nice_music.ogg rename to tools/xcode/templates/SFML/SFML CLT.xctemplate/nice_music.ogg diff --git a/tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/sansation.ttf b/tools/xcode/templates/SFML/SFML CLT.xctemplate/sansation.ttf similarity index 100% rename from tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/sansation.ttf rename to tools/xcode/templates/SFML/SFML CLT.xctemplate/sansation.ttf diff --git a/tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist deleted file mode 100644 index 75df00b27..000000000 --- a/tools/xcode/templates/SFML/SFML Command Line Tool Base.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,696 +0,0 @@ - - - - - - - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - Identifier - org.sfml-dev.commandLineToolBase - - Ancestors - - com.apple.dt.unit.macBase - - - - Options - - - - Identifier - useFrameworks - Name - Use frameworks - Description - Indicates whether frameworks should be used instead of dylibs or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_BINARY_TYPE - FRAMEWORKS - - SFML_LINK_DYLIBS_SUFFIX_DEBUG - - - - - - false - - - Project - - SharedSettings - - SFML_BINARY_TYPE - DYLIBS - - - - - - - - - - Identifier - useDebug - Name - Use debug dylibs in debug mode - Description - 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. - Type - checkbox - SortOrder - 1 - Default - false - RequiredOptions - - useFrameworks - false - - Units - - - true - - - Project - - SharedSettings - - SFML_LINK_DYLIBS_SUFFIX_DEBUG - -d - - - - - - false - - - Project - - SharedSettings - - SFML_LINK_DYLIBS_SUFFIX_DEBUG - - - - - - - - - - - Identifier - windowModule - Name - Use window module - Description - Indicates whether window module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_WINDOW - $(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:window:include - #include <SFML/Window.hpp> - - main.cpp:main:window:content - sf::Window window(sf::VideoMode(800, 600), "SFML window"); - - - main.cpp:system:include - - - main.cpp:main:audio_loop - - - - - false - - - Project - - SharedSettings - - SFML_WINDOW - - - - - - Definitions - - main.cpp:window:include - - - main.cpp:main:window:content - - - - main.cpp:main:event_loop - - - main.cpp:main:display - - - - - - - - - - Identifier - graphicsModule - RequiredOptions - - windowModule - true - - Name - Use graphics module - Description - Indicates whether graphics module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_GRAPHICS - $(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:graphics:include - #include <SFML/Graphics.hpp> - - main.cpp:main:graphics_init_window - // Create the main window -sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window"); - - - main.cpp:main:image_init - -// Load a sprite to display -sf::Texture texture; - - - main.cpp:main:image_finalize - return EXIT_FAILURE; -sf::Sprite sprite(texture); - - - main.cpp:main:image_load - if (!texture.loadFromFile("cute_image.jpg")) - - main.cpp:main:text_init - -// Create a graphical text to display -sf::Font font; - - - main.cpp:main:text_finalize - return EXIT_FAILURE; -sf::Text text("Hello SFML", font, 50); -text.setColor(sf::Color::Black); - - - main.cpp:main:text_load - if (!font.loadFromFile("sansation.ttf")) - - main.cpp:main:graphics_display - - // Clear screen - window.clear(); - - // Draw the sprite - window.draw(sprite); - - // Draw the string - window.draw(text); - - - - main.cpp:window:include - - - main.cpp:main:window:content - - - sansation.ttf - - Group - Supporting Files - Path - sansation.ttf - - - cute_image.jpg - - Group - Supporting Files - Path - cute_image.jpg - - - - - Nodes - - sansation.ttf - cute_image.jpg - - - - false - - - Project - - SharedSettings - - SFML_GRAPHICS - - - - - - Definitions - - main.cpp:graphics:include - - - main.cpp:main:graphics_init - - - main.cpp:main:graphics_display - - - main.cpp:main:image_load - - - - - - - - - Identifier - audioModule - Name - Use audio module - Description - Indicates whether audio module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_AUDIO - $(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:audio:include - #include <SFML/Audio.hpp> - - main.cpp:main:audio:content - -// Load a music to play -sf::Music music; -if (!music.openFromFile("nice_music.ogg")) - return EXIT_FAILURE; - -// Play the music -music.play(); - - nice_music.ogg - - Group - Supporting Files - Path - nice_music.ogg - - - - - Nodes - - nice_music.ogg - - - - false - - - Project - - SharedSettings - - SFML_AUDIO - - - - - - Definitions - - main.cpp:audio:include - - - main.cpp:main:audio:content - - - main.cpp:main:audio_loop - - - - - - - - - Identifier - networkModule - Name - Use network module - Description - Indicates whether network module should be used or not. - Type - checkbox - SortOrder - 1 - Default - true - Units - - - true - - - Project - - SharedSettings - - SFML_NETWORK - $(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX) - - - - - Definitions - - main.cpp:network:include - #include <SFML/Network.hpp> - - - - - - false - - - Project - - SharedSettings - - SFML_NETWORK - - - - - - Definitions - - main.cpp:network:include - - - - - - - - - - - - Nodes - - main.cpp:system:include - main.cpp:window:include - main.cpp:graphics:include - main.cpp:audio:include - main.cpp:network:include - main.cpp:resources_comment - main.cpp:main:window:content - main.cpp:main:graphics_init_window - main.cpp:main:image_init - main.cpp:main:image_load - main.cpp:main:image_finalize - main.cpp:main:text_init - main.cpp:main:text_load - main.cpp:main:text_finalize - main.cpp:main:audio:content - main.cpp:main:audio_loop - main.cpp:main:event_loop - main.cpp:main:graphics_display - main.cpp:main:display - - - - - Definitions - - - *:main - - Beginning - -int main (int argc, const char * argv[]) -{ - End - - return EXIT_SUCCESS; -} - Indent - 1 - - - main.cpp:system:include - #include <SFML/System.hpp> - - main.cpp:main:event_loop - -// 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 && event.key.code == sf::Keyboard::Escape) - window.close(); - } - - - main.cpp:main:display - - // Update the window - window.display(); -} - - - main.cpp:resources_comment - -/* 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. - */ - - - main.cpp:main:audio_loop - while (music.getStatus() == sf::Music::Playing) { - sf::sleep(sf::microseconds(100)); -} - - - - - Project - - - Name - ___PACKAGENAME___ - - - SharedSettings - - PRODUCT_NAME - $(TARGET_NAME) - - SFML_LINK_DYLIBS_PREFIX - -l - - SFML_LINK_FRAMEWORKS_PREFIX - -framework - - SFML_SYSTEM - $(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX) - - SFML_LINK_FRAMEWORKS_SUFFIX - - - SFML_LINK_PREFIX - $(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX) - - SFML_LINK_SUFFIX - $(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX) - - CLANG_ENABLE_OBJC_ARC - - - GCC_ENABLE_OBJC_GC - unsupported - - FRAMEWORK_SEARCH_PATHS - $(FRAMEWORK_SEARCH_PATHS) /Library/Frameworks/** - - HEADER_SEARCH_PATHS - $(HEADER_SEARCH_PATHS) /usr/local/include/** - - LIBRARY_SEARCH_PATHS - $(LIBRARY_SEARCH_PATHS) /usr/local/lib/** - - - Configurations - - - Debug - - SFML_LINK_DYLIBS_SUFFIX - $(SFML_LINK_DYLIBS_SUFFIX_DEBUG) - - OTHER_LDFLAGS - $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK) - - - - - Release - - SFML_LINK_DYLIBS_SUFFIX - - - OTHER_LDFLAGS - $(OTHER_LDFLAGS) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK) - - - - - diff --git a/tools/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateInfo.plist deleted file mode 100644 index d83f8019e..000000000 --- a/tools/xcode/templates/SFML/SFML Command Line Tool.xctemplate/TemplateInfo.plist +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - Ancestors - - org.sfml-dev.commandLineToolBase - com.apple.dt.unit.base - - - - Concrete - - - - Description - This template builds a command-line tool using SFML. - Identifier - org.sfml-dev.commandLineTool - Kind - Xcode.Xcode3.ProjectTemplateUnitKind - - - Targets - - - - - BuildPhases - - - Class - Sources - - - Class - Frameworks - - - ProductType - com.apple.product-type.tool - - - - diff --git a/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist new file mode 100644 index 000000000..3f7269b83 --- /dev/null +++ b/tools/xcode/templates/SFML/SFML Compiler.xctemplate/TemplateInfo.plist @@ -0,0 +1,275 @@ + + + + + + + + + + + Identifier + org.sfml-dev.compiler + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + + + Options + + + Identifier + compilerSettingsType + + Name + [ADVANCED] C++ Compiler and Standard Library + + Description + 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 ! + + Default + C++98 with Clang and libstdc++ + + NotPersisted + + + Type + popup + + Units + + + C++98 with GCC and libstdc++ + + Project + + SharedSettings + + GCC_VERSION + com.apple.compilers.llvmgcc42 + + + + + + C++98 with Clang and libstdc++ + + Project + + SharedSettings + + GCC_VERSION + com.apple.compilers.llvm.clang.1_0 + + CLANG_CXX_LANGUAGE_STANDARD + c++98 + + CLANG_CXX_LIBRARY + libstdc++ + + + + + + C++11 with Clang and libc++ + + Project + + SharedSettings + + GCC_VERSION + com.apple.compilers.llvm.clang.1_0 + + CLANG_CXX_LANGUAGE_STANDARD + c++0x + + CLANG_CXX_LIBRARY + libc++ + + + + + + + + Identifier + archType + + Name + [ADVANCED] Architectures + + Description + Choose which architecture(s) you want to support + + Default + Universal + + NotPersisted + + + Type + popup + + Units + + + Universal + + Project + + SharedSettings + + ARCHS + $(ARCHS_STANDARD_32_64_BIT) + + + + + + 64 bits + + Project + + SharedSettings + + ARCHS + $(ARCHS_STANDARD_64_BIT) + + + + + + 32 bits + + Project + + SharedSettings + + ARCHS + $(ARCHS_STANDARD_32_BIT) + + + + + + + + + Project + + SharedSettings + + SUPPORTED_PLATFORMS + macosx + + + + GCC_WARN_ABOUT_RETURN_TYPE + YES + GCC_WARN_UNINITIALIZED_AUTOS + YES + GCC_WARN_UNUSED_VARIABLE + YES + CLANG_WARN__DUPLICATE_METHOD_MATCH + YES + CLANG_WARN_EMPTY_BODY + YES + + + FRAMEWORK_SEARCH_PATHS + /Library/Frameworks/ $(inherited) + + HEADER_SEARCH_PATHS + /usr/local/include/ $(inherited) + + LIBRARY_SEARCH_PATHS + /usr/local/lib/ $(inherited) + + + Configurations + + Debug + + GCC_OPTIMIZATION_LEVEL + 0 + + GCC_PREPROCESSOR_DEFINITIONS + DEBUG=1 $(inherited) + + + ONLY_ACTIVE_ARCH + YES + + + Release + + COPY_PHASE_STRIP + YES + + + ONLY_ACTIVE_ARCH + NO + + + + + + Targets + + + Name + ___PACKAGENAME___ + + SharedSettings + + PRODUCT_NAME + $(TARGET_NAME) + + + Configurations + + Debug + + Release + + + + + + diff --git a/tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist b/tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist new file mode 100644 index 000000000..a636d30d3 --- /dev/null +++ b/tools/xcode/templates/SFML/SFML Linker.xctemplate/TemplateInfo.plist @@ -0,0 +1,363 @@ + + + + + + + + + + + Identifier + org.sfml-dev.linker + + Kind + Xcode.Xcode3.ProjectTemplateUnitKind + + + Options + + + + Identifier + binaryType + + Name + [ADVANCED] SFML binaries + + Description + Choose between dylibs and frameworks. If you're not sure, keep the default value. + + Default + Frameworks + + NotPersisted + + + Type + popup + + Units + + + Frameworks + + Project + + SharedSettings + + SFML_BINARY_TYPE + FRAMEWORKS + + SFML_LINK_DYLIBS_SUFFIX + + + + + + + Dylibs + + Project + + SharedSettings + + SFML_BINARY_TYPE + DYLIBS + + SFML_LINK_DYLIBS_SUFFIX + + + + + + + Dylibs (debug) + + Project + + SharedSettings + + SFML_BINARY_TYPE + DYLIBS + + + Configurations + + Debug + + SFML_LINK_DYLIBS_SUFFIX + -d + + + Release + + SFML_LINK_DYLIBS_SUFFIX + + + + + + + + + + + Identifier + windowModule + + Name + Use window module + + Description + Indicates whether window module should be used or not. + + Type + checkbox + + Default + true + + Units + + + true + + Project + + SharedSettings + + SFML_WINDOW + $(SFML_LINK_PREFIX)sfml-window$(SFML_LINK_SUFFIX) + + + + + + false + + Project + + SharedSettings + + SFML_WINDOW + + + + + + + + + + Identifier + graphicsModule + + Name + Use graphics module + + Description + Indicates whether graphics module should be used or not. + + RequiredOptions + + windowModule + true + + + Type + checkbox + + Default + true + + Units + + + true + + Project + + SharedSettings + + SFML_GRAPHICS + $(SFML_LINK_PREFIX)sfml-graphics$(SFML_LINK_SUFFIX) + + + + + + false + + Project + + SharedSettings + + SFML_GRAPHICS + + + + + + + + + + Identifier + audioModule + + Name + Use audio module + + Description + Indicates whether audio module should be used or not. + + Type + checkbox + + Default + true + + Units + + + true + + Project + + SharedSettings + + SFML_AUDIO + $(SFML_LINK_PREFIX)sfml-audio$(SFML_LINK_SUFFIX) + + + + + + false + + Project + + SharedSettings + + SFML_AUDIO + + + + + + + + + + Identifier + networkModule + + Name + Use network module + + Description + Indicates whether network module should be used or not. + + Type + checkbox + + Default + true + + Units + + + true + + Project + + SharedSettings + + SFML_NETWORK + $(SFML_LINK_PREFIX)sfml-network$(SFML_LINK_SUFFIX) + + + + + + false + + Project + + SharedSettings + + SFML_NETWORK + + + + + + + + + + Project + + SharedSettings + + + SFML_LINK_DYLIBS_PREFIX + -l + + SFML_LINK_FRAMEWORKS_PREFIX + -framework + + SFML_LINK_FRAMEWORKS_SUFFIX + + + SFML_LINK_PREFIX + $(SFML_LINK_$(SFML_BINARY_TYPE)_PREFIX) + + SFML_LINK_SUFFIX + $(SFML_LINK_$(SFML_BINARY_TYPE)_SUFFIX) + + + SFML_SYSTEM + $(SFML_LINK_PREFIX)sfml-system$(SFML_LINK_SUFFIX) + + + OTHER_LDFLAGS + $(inherited) $(SFML_SYSTEM) $(SFML_WINDOW) $(SFML_GRAPHICS) $(SFML_AUDIO) $(SFML_NETWORK) + + + + + diff --git a/tools/xcode/templates/install.sh b/tools/xcode/templates/install.sh new file mode 100755 index 000000000..ec5ef0a69 --- /dev/null +++ b/tools/xcode/templates/install.sh @@ -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/ diff --git a/tools/xcode/templates/readme.txt b/tools/xcode/templates/readme.txt index 6270e8aff..7b2478902 100644 --- a/tools/xcode/templates/readme.txt +++ b/tools/xcode/templates/readme.txt @@ -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 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. +