Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/buildsystem2/cmake/ConfigMSVC.cmake @ 2590

Last change on this file since 2590 was 2590, checked in by rgrieder, 16 years ago

Added ${ORXONOX_LIBRARY_BIN_DIR} which represents the binary directory for the external dlls on windows.
Restructured concepts in bin/ dir:

  • All files in bin/Release or bin/Debug get configured and copied to the output directory. Configure means setting all the variables marked with @Var@.
  • MinSizeRel and RelWithDebInfo are considered Release versions.
  • If there is not specialised file in bin/Debug resp. bin/Release, the file in bin/ is configured and copied.
  • orxonox.ini gets configured with the available plugins (release and debug), the plugins folder and the media directory.
  • Also the debug levels have been adjusted for Debug resp. Release versions of orxonox.ini
  • When not using multi-config (debug, release, etc.) generator (like msvc or xcode), a run script called run (unix) or run.bat (windows) is configured in the root directory.
  • For tardis, ogre.cfg is copied as well due to a yet unknown bug with fonts for the ogre gui
  • moved all old style msvc project files to visual_studio folder (that only includes configured output files)
  • This commit also makes the visual studio files run in all configurations (tested only on my box).
  • Property svn:eol-style set to native
File size: 5.8 KB
Line 
1 #
2 #   ORXONOX - the hottest 3D action shooter ever to exist
3 #                    > www.orxonox.net <
4 #
5 #
6 #   License notice:
7 #
8 #   This program is free software; you can redistribute it and/or
9 #   modify it under the terms of the GNU General Public License
10 #   as published by the Free Software Foundation; either version 2
11 #   of the License, or (at your option) any later version.
12 #
13 #   This program is distributed in the hope that it will be useful,
14 #   but WITHOUT ANY WARRANTY; without even the implied warranty of
15 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 #   GNU General Public License for more details.
17 #
18 #   You should have received a copy of the GNU General Public License
19 #   along with this program; if not, write to the Free Software
20 #   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 #
22 #   Author:
23 #      Reto Grieder
24 #   Co-authors:
25 #      ...
26 #
27 
28###################### MSVC config ########################
29# Set the library directories and special options when
30# using Visual Studio.
31###########################################################
32
33IF (MSVC)
34  MESSAGE(STATUS "Running on MSVC. Using customized paths and options.")
35
36  ###################### Libraries ########################
37
38  # Determine library directory
39  IF(EXISTS ${CMAKE_SOURCE_DIR}/dependencies/orxonox_vc8)
40    SET(MSVC_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/dependencies/orxonox_vc8")
41  ELSEIF(EXISTS ${CMAKE_SOURCE_DIR}/../lib_dist/vc8/dependencies/orxonox_vc8)
42    SET(MSVC_LIBRARY_DIR "${CMAKE_SOURCE_DIR}/../lib_dist/vc8/dependencies/orxonox_vc8")
43  ELSE(EXISTS ${CMAKE_SOURCE_DIR}/dependencies/orxonox_vc8)
44    MESSAGE(FATAL_ERROR "Could not find dependency directory for the Visual Studio libraries")
45  ENDIF(EXISTS ${CMAKE_SOURCE_DIR}/dependencies/orxonox_vc8)
46  SET(ORXONOX_LIBRARY_BIN_DIR ${MSVC_LIBRARY_DIR}/bin)
47
48  # Set variables for the include directories and the libraries
49  # Note: When setting ENV${} variables, make sure to use quotes when
50  #       having multiple directories.
51  SET(ENV{BOOST_ROOT}        ${MSVC_LIBRARY_DIR}/boost-1.35.0)
52  SET(ENV{CEGUIDIR}          ${MSVC_LIBRARY_DIR}/cegui-0.6.1)
53  SET(ENV{ENETDIR}           ${MSVC_LIBRARY_DIR}/enet-1.2)
54  SET(ENV{ALUTDIR}           ${MSVC_LIBRARY_DIR}/freealut-1.1.0)
55  SET(ENV{OGGDIR}            ${MSVC_LIBRARY_DIR}/libogg-1.1.3)
56  SET(ENV{VORBISDIR}         ${MSVC_LIBRARY_DIR}/libvorbis-1.2.0)
57  SET(ENV{OPENALDIR}         ${MSVC_LIBRARY_DIR}/openal-1.1)
58  SET(ENV{LUA_DIR}           ${MSVC_LIBRARY_DIR}/lua-5.1.3)
59  SET(ENV{OGRE_HOME}        "${MSVC_LIBRARY_DIR}/ogre-1.4.9;${ORXONOX_LIBRARY_BIN_DIR}")
60  SET(TCL_INCLUDE_PATH       ${MSVC_LIBRARY_DIR}/tcl-8.5.2/include)
61  SET(TCL_LIBRARY            ${MSVC_LIBRARY_DIR}/tcl-8.5.2/lib/tcl85t.lib)
62  SET(TCL_FOUND TRUE)
63  # Do some hacking to avoid "Tclsh not found" message
64  SET(TCL_TCLSH              ${MSVC_LIBRARY_DIR}/tcl-8.5.2/lib/tcl85t.lib)
65  SET(TCL_TCLSH_FOUND TRUE)
66  SET(ZLIB_INCLUDE_DIR       ${MSVC_LIBRARY_DIR}/zlib-1.2.3/include)
67  SET(ZLIB_LIBRARY optimized ${MSVC_LIBRARY_DIR}/zlib-1.2.3/lib/zlib.lib
68                   debug     ${MSVC_LIBRARY_DIR}/zlib-1.2.3/lib/zlib_d.lib)
69  SET(ZLIB_FOUND TRUE)
70
71  #################### Compiler Flags #####################
72
73  # /MD    Minimal Rebuild
74  # /RTC1  Both basic runtime checks
75  # /MD[d] Multithreaded [debug] DLL
76  # /Zi    Program Database
77  # /ZI    Program Database for Edit & Continue
78  # /WX    Warning Level X
79  # /wdX   Disable specific warning X
80  SET(MSVC_CL_FLAGS "
81    /D WIN32 /D __WIN32__ /D _WIN32 /D _WINDOWS
82    /D BOOST_ALL_DYN_LINK
83    /D OIS_DYNAMIC_LIB
84    /D ZLIB_WINAPI
85    /D LUA_BUILD_AS_DLL
86    /D _CRT_SECURE_NO_WARNINGS
87    /W3
88    /EHsc
89    /wd4522
90    /wd4251
91    /wd4800
92  ")
93  SET(CMAKE_C_FLAGS                  "${MSVC_CL_FLAGS}")
94  SET(CMAKE_CXX_FLAGS                "${MSVC_CL_FLAGS}")
95
96  # Note: ${CMAKE_C_FLAGS} get added to the specific ones
97  SET(MSVC_CL_FLAGS_DEBUG            "/MDd /Od  /Zi /Gm /RTC1")
98  SET(MSVC_CL_FLAGS_RELEASE          "/MD  /MP2 /D TOLUA_RELEASE")
99  SET(CMAKE_C_FLAGS_DEBUG            "${MSVC_CL_FLAGS_DEBUG}")
100  SET(CMAKE_CXX_FLAGS_DEBUG          "${MSVC_CL_FLAGS_DEBUG}")
101  SET(CMAKE_C_FLAGS_RELEASE          "${MSVC_CL_FLAGS_RELEASE} /O2")
102  SET(CMAKE_CXX_FLAGS_RELEASE        "${MSVC_CL_FLAGS_RELEASE} /O2")
103  SET(CMAKE_C_FLAGS_RELWITHDEBINFO   "${MSVC_CL_FLAGS_RELEASE} /O2 /Zi")
104  SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${MSVC_CL_FLAGS_RELEASE} /O2 /Zi")
105  SET(CMAKE_C_FLAGS_MINSIZEREL       "${MSVC_CL_FLAGS_RELEASE} /O1")
106  SET(CMAKE_CXX_FLAGS_MINSIZEREL     "${MSVC_CL_FLAGS_RELEASE} /O1")
107
108  ##################### Linker Flags ######################
109
110  SET(MSVC_LINKER_FLAGS                        "")
111  SET(CMAKE_EXE_LINKER_FLAGS                   "${MSVC_LINKER_FLAGS}")
112  SET(CMAKE_SHARED_LINKER_FLAGS                "${MSVC_LINKER_FLAGS}")
113
114  # Note: ${CMAKE_EXE_LINKER_FLAGS} get added to the specific ones
115  SET(MSVC_LINKER_FLAGS_DEBUG                  "/INCREMENTAL:YES")
116  SET(MSVC_LINKER_FLAGS_RELEASE                "/INCREMENTAL:NO /OPT:REF /OPT:ICF")
117  SET(CMAKE_EXE_LINKER_FLAGS_DEBUG             "${MSVC_LINKER_FLAGS_DEBUG}")
118  SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG          "${MSVC_LINKER_FLAGS_DEBUG}")
119  SET(CMAKE_EXE_LINKER_FLAGS_RELEASE           "${MSVC_LINKER_FLAGS_RELEASE}")
120  SET(CMAKE_SHARED_LINKER_FLAGS_RELEASE        "${MSVC_LINKER_FLAGS_RELEASE}")
121  SET(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO    "${MSVC_LINKER_FLAGS_RELEASE}")
122  SET(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${MSVC_LINKER_FLAGS_RELEASE}")
123  SET(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL        "${MSVC_LINKER_FLAGS_RELEASE}")
124  SET(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL     "${MSVC_LINKER_FLAGS_RELEASE}")
125
126  ######################### Misc ##########################
127
128  # Set tolua working directory because lua.dll is not where tolua is
129  SET(TOLUA_PARSER_WORKING_DIRECTORY ${ORXONOX_LIBRARY_BIN_DIR})
130ENDIF (MSVC)
Note: See TracBrowser for help on using the repository browser.