Index: /code/trunk/CMakeLists.txt
===================================================================
--- /code/trunk/CMakeLists.txt	(revision 8367)
+++ /code/trunk/CMakeLists.txt	(revision 8368)
@@ -92,9 +92,18 @@
 SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/cmake/tools)
 
-# Set Debug build to default when not having multi-config generator like msvc
+# Flag variables for extra configuration "RelForDevs" should be hidden
+MARK_AS_ADVANCED(
+  CMAKE_CXX_FLAGS_RELFORDEVS
+  CMAKE_C_FLAGS_RELFORDEVS
+  CMAKE_EXE_LINKER_FLAGS_RELFORDEVS
+  CMAKE_MODULE_LINKER_FLAGS_RELFORDEVS
+  CMAKE_SHARED_LINKER_FLAGS_RELFORDEVS
+)
+
 IF(NOT CMAKE_CONFIGURATION_TYPES)
+  # Set Debug build to default when not having multi-config generator like MSVC or XCODE
   IF(NOT CMAKE_BUILD_TYPE)
     SET(CMAKE_BUILD_TYPE Debug CACHE STRING
-        "Build types are: Debug, Release, MinSizeRel, RelWithDebInfo" FORCE)
+        "Build types are: Debug, RelForDevs, RelWithDebInfo, Release, MinSizeRel" FORCE)
   ENDIF()
   MARK_AS_ADVANCED(CLEAR CMAKE_BUILD_TYPE)
@@ -102,8 +111,12 @@
   MESSAGE(STATUS "*** Build type is ${CMAKE_BUILD_TYPE} ***")
 ELSE()
+  # Make sure no build type is ever set
   IF(CMAKE_BUILD_TYPE)
     SET(CMAKE_BUILD_TYPE CACHE STRING FORCE)
   ENDIF()
-  MARK_AS_ADVANCED(CMAKE_BUILD_TYPE)
+  MARK_AS_ADVANCED(FORCE CMAKE_BUILD_TYPE)
+  # Add our extra configuration "RelForDevs"
+  SET(CMAKE_CONFIGURATION_TYPES "Debug;RelForDevs;RelWithDebInfo;Release;MinSizeRel"
+      CACHE STRING "Semicolon separated list of supported configuration types." FORCE)
 ENDIF()
 
Index: /code/trunk/cmake/CompilerConfigGCC.cmake
===================================================================
--- /code/trunk/cmake/CompilerConfigGCC.cmake	(revision 8367)
+++ /code/trunk/cmake/CompilerConfigGCC.cmake	(revision 8368)
@@ -52,6 +52,7 @@
 SET_COMPILER_FLAGS("    -g -ggdb -D_DEBUG" Debug          CACHE)
 SET_COMPILER_FLAGS("             -DNDEBUG" ReleaseAll     CACHE)
+ADD_COMPILER_FLAGS("-O2 -g -ggdb"          RelForDevs     CACHE)
+ADD_COMPILER_FLAGS("-O3 -g -ggdb"          RelWithDebInfo CACHE)
 ADD_COMPILER_FLAGS("-O3"                   Release        CACHE)
-ADD_COMPILER_FLAGS("-O2 -g -ggdb"          RelWithDebInfo CACHE)
 ADD_COMPILER_FLAGS("-Os"                   MinSizeRel     CACHE)
 
@@ -112,6 +113,5 @@
 # Add compiler and linker flags for MinGW
 IF (MINGW)
-  ADD_COMPILER_FLAGS("-gstabs+" Debug          CACHE)
-  ADD_COMPILER_FLAGS("-gstabs+" RelWithDebInfo CACHE)
+  ADD_COMPILER_FLAGS("-gstabs+" Debug RelForDevs RelWithDebInfo CACHE)
 
   ADD_LINKER_FLAGS("-enable-auto-import" CACHE)
Index: /code/trunk/cmake/CompilerConfigMSVC.cmake
===================================================================
--- /code/trunk/cmake/CompilerConfigMSVC.cmake	(revision 8367)
+++ /code/trunk/cmake/CompilerConfigMSVC.cmake	(revision 8368)
@@ -40,5 +40,5 @@
 # additionally for CXX: -EHsc -GR
 # We keep these flags but reset the build specific flags
-SET_COMPILER_FLAGS("" Debug RelWithDebInfo Release MinSizeRel CACHE)
+SET_COMPILER_FLAGS("" Debug RelForDevs RelWithDebInfo Release MinSizeRel CACHE)
 
 # Make sure we define all the possible macros for identifying Windows
@@ -51,7 +51,4 @@
 ADD_COMPILER_FLAGS("-MP" CACHE)
 
-# Always generate debug symbols (there is really no reason not to)
-ADD_COMPILER_FLAGS("-Zi" CACHE)
-
 # Never omit frame pointers to avoid useless stack traces (the performance
 # loss is almost not measurable)
@@ -62,12 +59,14 @@
 # Set build specific flags.
 # -MD[d]    Multithreaded [debug] shared MSVC runtime library
+# -Zi       Generate debug symbols
 # -O[d|2|1] No optimisations, optimise for speed, optimise for size
 # -Oi[-]    Use or disable use of intrinisic functions
 # -GL       Link time code generation (see -LTCG in linker flags)
 # -RTC1     Both basic runtime checks
-ADD_COMPILER_FLAGS("-MDd -Od -Oi  -D_DEBUG -RTC1" Debug          CACHE)
-ADD_COMPILER_FLAGS("-MD  -O2 -Oi  -DNDEBUG"       RelWithDebInfo CACHE)
-ADD_COMPILER_FLAGS("-MD  -O2 -Oi  -DNDEBUG -GL"   Release        CACHE)
-ADD_COMPILER_FLAGS("-MD  -O1 -Oi- -DNDEBUG -GL"   MinSizeRel     CACHE)
+ADD_COMPILER_FLAGS("-MDd -Zi -Od -Oi  -D_DEBUG -RTC1" Debug          CACHE)
+ADD_COMPILER_FLAGS("-MD  -Zi -O2 -Oi  -DNDEBUG"       RelForDevs     CACHE)
+ADD_COMPILER_FLAGS("-MD  -Zi -O2 -Oi  -DNDEBUG -GL"   RelWithDebInfo CACHE)
+ADD_COMPILER_FLAGS("-MD      -O2 -Oi  -DNDEBUG -GL"   Release        CACHE)
+ADD_COMPILER_FLAGS("-MD      -O1 -Oi- -DNDEBUG -GL"   MinSizeRel     CACHE)
 
 
@@ -120,8 +119,5 @@
 # CMake default flags: -MANIFEST -STACK:10000000 -machine:I386
 # We keep these flags but reset the build specific flags
-SET_LINKER_FLAGS("" Debug RelWithDebInfo Release MinSizeRel CACHE)
-
-# Always generate debug symbols (there is really no reason not to)
-ADD_LINKER_FLAGS("-DEBUG" CACHE)
+SET_LINKER_FLAGS("" Debug RelForDevs RelWithDebInfo Release MinSizeRel CACHE)
 
 # Never fold multiple functions into a single one because we might compare
@@ -132,12 +128,15 @@
 ADD_LINKER_FLAGS("-OPT:NOWIN98" MSVC80 CACHE)
 
+# Generate debug symbols
+ADD_LINKER_FLAGS("-DEBUG" Debug RelForDevs RelWithDebInfo CACHE)
+
 # Incremental linking speeds up development builds
-ADD_LINKER_FLAGS("-INCREMENTAL:YES" Debug   RelWithDebInfo CACHE)
-ADD_LINKER_FLAGS("-INCREMENTAL:NO"  Release MinSizeRel     CACHE)
+ADD_LINKER_FLAGS("-INCREMENTAL:YES" Debug   RelForDevs                CACHE)
+ADD_LINKER_FLAGS("-INCREMENTAL:NO"  Release RelWithDebInfo MinSizeRel CACHE)
 
 # Eliminate unreferenced data
-ADD_LINKER_FLAGS("-OPT:REF" Release MinSizeRel CACHE)
+ADD_LINKER_FLAGS("-OPT:REF" Release RelWithDebInfo MinSizeRel CACHE)
 
 # Link time code generation can improve run time performance at the cost of
 # hugely increased link time (the total build time is about the same though)
-ADD_LINKER_FLAGS("-LTCG" Release MinSizeRel CACHE)
+ADD_LINKER_FLAGS("-LTCG" Release RelWithDebInfo MinSizeRel CACHE)
Index: /code/trunk/cmake/PackageConfig.cmake
===================================================================
--- /code/trunk/cmake/PackageConfig.cmake	(revision 8367)
+++ /code/trunk/cmake/PackageConfig.cmake	(revision 8368)
@@ -81,5 +81,5 @@
         FILES ${DEP_BINARY_DIR}/${_file}
         DESTINATION bin
-        CONFIGURATIONS Release RelWithDebInfo MinSizeRel
+        CONFIGURATIONS RelForDevs Release RelWithDebInfo MinSizeRel
       )
     ENDFOREACH(_file)
@@ -90,5 +90,5 @@
       DIRECTORY ${DEP_BINARY_DIR}/
       DESTINATION bin
-      CONFIGURATIONS Release RelWithDebInfo MinSizeRel
+      CONFIGURATIONS RelForDevs Release RelWithDebInfo MinSizeRel
       REGEX "_[Dd]\\.[a-zA-Z0-9+-]+$|-mt-gd-|^.*\\.pdb$" EXCLUDE
     )
Index: /code/trunk/cmake/PackageConfigOSX.cmake
===================================================================
--- /code/trunk/cmake/PackageConfigOSX.cmake	(revision 8367)
+++ /code/trunk/cmake/PackageConfigOSX.cmake	(revision 8368)
@@ -98,5 +98,5 @@
     DIRECTORY ${DEP_BINARY_DIR}/
     DESTINATION bin
-    CONFIGURATIONS Release RelWithDebInfo MinSizeRel
+    CONFIGURATIONS RelForDevs Release RelWithDebInfo MinSizeRel
     REGEX "_[Dd]\\.[a-zA-Z0-9+-]+$|-mt-gd-|^.*\\.pdb$" EXCLUDE
   )
Index: /code/trunk/cmake/tools/FlagUtilities.cmake
===================================================================
--- /code/trunk/cmake/tools/FlagUtilities.cmake	(revision 8367)
+++ /code/trunk/cmake/tools/FlagUtilities.cmake	(revision 8368)
@@ -22,5 +22,5 @@
  #  Description:
  #    Sets the compiler/linker flags. After the flags you can specify more args:
- #    Release, Debug, RelWithDebInfo, MinSizeRel: Build configs (inclusive)
+ #    Release, Debug, RelWithDebInfo, MinSizeRel, RelForDevs: Build configs
  #    ReleaseAll: Sets the flags of all three release builds
  #    CACHE: Values are witten with SET_CACHE_ADVANCED
@@ -36,6 +36,6 @@
  #    REMOVE_COMPILER_FLAGS("/Gm "asdf" -q"test -foo" CXX ReleaseAll NOT UNIX)
  #    This will only remove the CXX (C++) flags on a non Unix system for the
- #    Release, RelWithDebInfo and MinSizeRel configurations. The macros should
- #    be able to cope with "test -foo" as string argument for a flag.
+ #    Release, RelWithDebInfo, MinSizeRel, RelForDevs configurations. The macros
+ #    should be able to cope with "test -foo" as string argument for a flag.
  #
 
@@ -89,10 +89,10 @@
     IF(_arg MATCHES "${_key_regex}")
       LIST(APPEND _langs "${_arg}")
-    ELSEIF(   _arg MATCHES "^(Debug|Release|MinSizeRel|RelWithDebInfo)$"
-           OR _arg MATCHES "^(DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO)$")
+    ELSEIF(   _arg MATCHES "^(Debug|Release|MinSizeRel|RelWithDebInfo|RelForDevs)$"
+           OR _arg MATCHES "^(DEBUG|RELEASE|MINSIZEREL|RELWITHDEBINFO|RelForDevs)$")
       STRING(TOUPPER "${_arg}" _upper_arg)
       LIST(APPEND _build_types ${_upper_arg})
     ELSEIF(_arg STREQUAL "ReleaseAll")
-      LIST(APPEND _build_types RELEASE MINSIZEREL RELWITHDEBINFO)
+      LIST(APPEND _build_types RELEASE MINSIZEREL RELWITHDEBINFO RELFORDEVS)
     ELSEIF(_arg STREQUAL "CACHE")
       SET(_write_to_cache TRUE)
Index: /code/trunk/src/OrxonoxConfig.cmake
===================================================================
--- /code/trunk/src/OrxonoxConfig.cmake	(revision 8367)
+++ /code/trunk/src/OrxonoxConfig.cmake	(revision 8368)
@@ -75,4 +75,5 @@
 # about the active one we have to define the macro for each configuration
 ADD_COMPILER_FLAGS("-DCMAKE_Debug_BUILD"          Debug)
+ADD_COMPILER_FLAGS("-DCMAKE_RelForDevs_BUILD"     RelForDevs)
 ADD_COMPILER_FLAGS("-DCMAKE_Release_BUILD"        Release)
 ADD_COMPILER_FLAGS("-DCMAKE_RelWithDebInfo_BUILD" RelWithDebInfo)
Index: /code/trunk/src/OrxonoxConfig.h.in
===================================================================
--- /code/trunk/src/OrxonoxConfig.h.in	(revision 8367)
+++ /code/trunk/src/OrxonoxConfig.h.in	(revision 8368)
@@ -179,8 +179,9 @@
 */
 
-// Configurations Release and MinSizeRel are designed for redistribution while
-// RelWithDebInfo is more for development
+// Configurations Release, RelWithDebInfo and MinSizeRel are designed for
+// redistribution while RelForDevs is for development purposes
 // ORXONOX_RELEASE simplifies this a little bit
-#if defined(CMAKE_Release_BUILD) || defined(CMAKE_MinSizeRel_BUILD)
+#if defined(CMAKE_Release_BUILD) || defined(CMAKE_MinSizeRel_BUILD) \
+    || defined(CMAKE_RelWithDebInfo_BUILD)
 #  define ORXONOX_RELEASE
 #endif
Index: /code/trunk/src/orxonox-main.vcproj.user.in
===================================================================
--- /code/trunk/src/orxonox-main.vcproj.user.in	(revision 8367)
+++ /code/trunk/src/orxonox-main.vcproj.user.in	(revision 8368)
@@ -8,4 +8,13 @@
 		<Configuration
 			Name="Debug|${MSVC_PLATFORM}"
+			>
+			<DebugSettings
+				WorkingDirectory="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$(OutDir)"
+				Environment="PATH=${RUNTIME_LIBRARY_DIRECTORY};%PATH%"
+				EnvironmentMerge="true"
+			/>
+		</Configuration>
+		<Configuration
+			Name="RelForDevs|${MSVC_PLATFORM}"
 			>
 			<DebugSettings
Index: /code/trunk/src/orxonox-main.vcxproj.user.in
===================================================================
--- /code/trunk/src/orxonox-main.vcxproj.user.in	(revision 8367)
+++ /code/trunk/src/orxonox-main.vcxproj.user.in	(revision 8368)
@@ -2,4 +2,9 @@
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|${MSVC_PLATFORM}'">
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <LocalDebuggerEnvironment>PATH=${RUNTIME_LIBRARY_DIRECTORY};%PATH%</LocalDebuggerEnvironment>
+    <LocalDebuggerWorkingDirectory>$(Outdir)</LocalDebuggerWorkingDirectory>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='RelForDevs|${MSVC_PLATFORM}'">
     <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
     <LocalDebuggerEnvironment>PATH=${RUNTIME_LIBRARY_DIRECTORY};%PATH%</LocalDebuggerEnvironment>
