source: osgVisual/CMakeLists.txt @ 52

Last change on this file since 52 was 52, checked in by Torben Dannhauer, 14 years ago

Update CMakeLists.txt to support on the fly x64 builds coexistent to x86 builds on windows. Read CMakeLists.txt header for more information how to proceed.

File size: 13.0 KB
Line 
1#################################################################################################
2# This file allows to configure osgVisual with CMAKE to generate native build solutions.                #
3#                                                                                                                                                                                               #
4# Specify the following environment variables to use osgVisual and this CMAKE script:                   #
5#       * OSG_ROOT: Path to your 32 bit (x86) OSG, e.g. D:\OSG\OpenSceneGraph-2.9.8_x86                         #
6#       * OSG_ROOT_X64: Path to your 64 bit (x64) OSG, e.g. D:\OSG\OpenSceneGraph-2.9.8_x64                     #
7#       * OSG: Path to your 32 bit (x86) OSG and 3rdParty binary folder,                                                        #
8#                e.g. %OSG_ROOT%\bin;D:\OSG\3rdParty\bin\x86                                                                                    #
9#       * OSG_X64: Path to your 64 bit (x64) OSG and 3rdParty binary folder,                                            #
10#                e.g. %OSG_ROOT_X64%\bin;D:\OSG\3rdParty\bin\x64                                                                                #
11#       * PATH: Extend with %OSG% or %OSG_X64% to use OSG and osgVisual from command line,                      #
12#                e.g. PATH=%PATH%;%OSG%                                                                                                                                 #
13#                                                                                                                                                                                               #
14#       NOTE:   On Visual Studio and x64 Arch, CMAKE uses the project settings to specify the           #
15#                       correct x64 OSG path, so you can use osg as 32 bit in your system path.                         #
16#                                                                                                                                                                                               #
17#                                                                                                                                                                                               #
18#################################################################################################
19
20cmake_minimum_required(VERSION 2.8)
21
22
23PROJECT(osgVisual)
24#SET(CMAKE_MODULE_PATH "${osgVisual_SOURCE_DIR}/../CMakeModules;${CMAKE_MODULE_PATH}")
25
26#INCLUDE( CheckTypeSize )
27#CHECK_TYPE_SIZE( "void*" SIZE_OF_VOID_P )
28IF( CMAKE_SIZEOF_VOID_P EQUAL 4 )
29    MESSAGE( STATUS "32 bit architecture detected" )
30    SET(DESTINATION_ARCH "x86")
31ENDIF()
32IF( CMAKE_SIZEOF_VOID_P EQUAL 8 )
33    MESSAGE( STATUS "64 bit architecture detected" )
34    SET(DESTINATION_ARCH "x64")
35ENDIF()
36
37
38# Get OSG Settings
39IF(DESTINATION_ARCH STREQUAL "x64")
40        SET(OSG_ROOT_BKP $ENV{OSG_ROOT})        # BACKUP old OSG_ROOT
41        SET(ENV{OSG_ROOT} $ENV{OSG_ROOT_X64})   # Replace OSGROOT with OSG_ROOT_X64 to force CMAKE to find the correct OSG version (64 bit)
42ENDIF ()
43
44SET(OpenSceneGraph_MARK_AS_ADVANCED ON)
45FIND_PACKAGE(OpenSceneGraph 2.9.7 REQUIRED osgViewer OpenThreads osgDB osgTerrain osgGA osgText osgSim osgUtil)
46FIND_PACKAGE(OpenGL REQUIRED)
47
48IF(DESTINATION_ARCH STREQUAL "x64")
49        SET(ENV{OSG_ROOT} ${OSG_ROOT_BKP})      # Restore old OSG_ROOT
50        UNSET(OSG_ROOT_BKP)                                     # Delete backup
51ENDIF ()
52
53
54
55# Module sky-silverlining - At the moment only for Win32, will be opened to Unix ASAP
56# OPTION( OPTION_VAR "description string" [initial value] )
57IF ( WIN32 )
58       
59        SET(USE_SKY_SILVERLINING ON CACHE BOOL "Enable to use Sundog-soft's Silverlining SDK for sky & weather")
60        IF(USE_SKY_SILVERLINING )
61                SET(SOURCES
62                        ${SOURCES}
63                        include/sky_Silverlining/skySilverLining_AtmosphereReference.h
64                        include/sky_Silverlining/skySilverlining_cloudLayerSlot.h
65                        include/sky_Silverlining/skySilverLining_cloudsDrawable.h
66                        include/sky_Silverlining/skySilverLining_ProjectionMatrixCallback.h
67                        include/sky_Silverlining/skySilverLining_skyDrawable.h
68                        include/sky_Silverlining/visual_skySilverLining.h
69                        src/sky_Silverlining/skySilverLining_cloudsDrawable.cpp
70                        src/sky_Silverlining/skySilverLining_skyDrawable.cpp
71                        src/sky_Silverlining/visual_skySilverLining.cpp                 
72                )
73               
74                IF (DESTINATION_ARCH STREQUAL "x86")
75                        SET(SILVERLINING_ARCH "win32")
76                ELSEIF ( DESTINATION_ARCH STREQUAL "x64" )
77                        SET(SILVERLINING_ARCH "x64")
78                ENDIF ()
79                SET(SILVERLINING_LIBRARY_RELEASE $ENV{SILVERLINING_PATH}\\lib\\vc9\\${SILVERLINING_ARCH}\\SilverLining-MT-DLL.lib CACHE FILEPATH "Select the release library of Sundog-Soft's Silverlining SDK to link against." )
80                SET(SILVERLINING_LIBRARY_DEBUG $ENV{SILVERLINING_PATH}\\lib\\vc9\\${SILVERLINING_ARCH}\\SilverLining-MTD-DLL.lib CACHE FILEPATH "Select the debug library of Sundog-Soft's Silverlining SDK to link against." )
81                SET(SILVERLINING_INCLUDE_DIR "$ENV{SILVERLINING_PATH}\\Public Headers" CACHE PATH "Enter the path to the the public Include directory of Sundog-Soft's Silverlining SDK" )
82                SET(SILVERLINING_LICENSEE "Your user name" CACHE STRING "Enter your Silverlining licensee name. If you license available, osgVisual will work with silverlining as 5 minute demo with the default value." )
83                SET(SILVERLINING_LICENSE "Your license code" CACHE STRING "Enter your Silverlining license key. If you license available, osgVisual will work with silverlining as 5 minute demo with the default value." )
84                INCLUDE_DIRECTORIES(${SILVERLINING_INCLUDE_DIR} include/sky_Silverlining)
85                ADD_DEFINITIONS( "-DUSE_SKY_SILVERLINING" )
86                ADD_DEFINITIONS( "-DSILVERLINING_LICENSEE=\"${SILVERLINING_LICENSEE}\"" )
87                ADD_DEFINITIONS( "-DSILVERLINING_LICENSE=\"${SILVERLINING_LICENSE}\"" )
88               
89        ELSE(USE_SKY_SILVERLINING)
90                UNSET(SILVERLINING_LIBRARY_RELEASE CACHE)
91                UNSET(SILVERLINING_LIBRARY_DEBUG CACHE)
92                UNSET(SILVERLINING_INCLUDE_DIR CACHE)
93                UNSET(SILVERLINING_LICENSEE)
94                UNSET(SILVERLINING_LICENSE)
95        ENDIF(USE_SKY_SILVERLINING)
96ENDIF(WIN32)
97
98
99# Module distortion
100SET(USE_DISTORTION OFF CACHE BOOL "Enable to use distortion with Projection Designer's distortion maps")
101IF(USE_DISTORTION)
102        SET(SOURCES
103                ${SOURCES}
104                include/distortion/visual_distortion.h
105                src/distortion/visual_distortion.cpp
106        )
107        INCLUDE_DIRECTORIES(include/distortion)
108        ADD_DEFINITIONS( "-DUSE_DISTORTION" )
109ENDIF(USE_DISTORTION)
110
111
112# Module Vista2D - Only available under Win32
113if( WIN32 )
114        SET(USE_VISTA2D OFF CACHE BOOL "Enable to use Vista2D by Wetzel Technology")
115        IF( USE_VISTA2D )
116                INCLUDE_DIRECTORIES( include/vista2D )
117                SET(SOURCES
118                        ${SOURCES}
119                        include/vista2D/visual_vista2D.h
120                        src/vista2D/visual_vista2D.cpp 
121                )
122                SET(VISTA2D_INCLUDE_DIR . CACHE PATH "Select the INCLUDE directory path for Vista2D by Wetzel Technology." )
123                SET(VISTA2D_LIBRARY_DEBUG . CACHE FILEPATH "Select debug LIBRARY path for linking against Vista2D by Wetzel Technology." )
124                SET(VISTA2D_LIBRARY_RELEASE . CACHE FILEPATH "Select release LIBRARY path for linking against Vista2D by Wetzel Technology." )
125                INCLUDE_DIRECTORIES(${VISTA2D_INCLUDE_DIR})
126                ADD_DEFINITIONS( "-DUSE_VISTA2D" )
127        ELSE(USE_VISTA2D)
128                UNSET(VISTA2D_INCLUDE_DIR CACHE)
129                UNSET(VISTA2D_LIBRARY_DEBUG CACHE)
130                UNSET(VISTA2D_LIBRARY_RELEASE CACHE)
131        ENDIF(USE_VISTA2D)
132ENDIF(WIN32)
133
134
135# Module Spacenavigator manipulator - ONLY under WIN32
136if( WIN32 )
137        # No header or linking required, because WIN32 COM interface used.
138        SET(USE_SPACEMOUSE ON CACHE BOOL "Enable to use camera manipulator based on Spacenavigator by 3DConnexion")
139        IF( USE_SPACEMOUSE )
140                SET(SOURCES
141                        ${SOURCES}
142                        include/manip_Spacemouse/manip_spaceMouse.h
143                        include/manip_Spacemouse/manip_freeSpaceMouse.h
144                        include/manip_Spacemouse/manip_nodeTrackerSpaceMouse.h
145                        src/manip_Spacemouse/manip_spaceMouse.cpp
146                        src/manip_Spacemouse/manip_freeSpaceMouse.cpp
147                        src/manip_Spacemouse/manip_nodeTrackerSpaceMouse.cpp
148                )
149                INCLUDE_DIRECTORIES(include/manip_Spacemouse)
150                ADD_DEFINITIONS( "-DUSE_SPACENAVIGATOR" )
151        ENDIF(USE_SPACEMOUSE)
152ENDIF(WIN32)
153
154
155# Module cluster
156SET(USE_CLUSTER_UDP ON CACHE BOOL "Enable to use the UDP Implementation for the cluster interface")
157IF( USE_CLUSTER_UDP )
158                SET(SOURCES
159                        ${SOURCES}
160                        include/cluster/dataIO_cluster.h
161                        include/cluster/dataIO_clusterUDP.h
162                        include/cluster/dataIO_clusterUDP_Transmission.h
163                        src/cluster/dataIO_clusterUDP.cpp
164                        src/cluster/dataIO_clusterUDP_Transmission.cpp
165                )
166                ADD_DEFINITIONS( "-DUSE_CLUSTER_UDP" )
167ELSE(USE_CLUSTER_UDP)
168                SET(SOURCES
169                        ${SOURCES}
170                        include/cluster/dataIO_cluster.h
171                        include/cluster/dataIO_clusterDummy.h
172                        src/cluster/dataIO_clusterDummy.cpp
173                )
174                ADD_DEFINITIONS( "-DUSE_CLUSTER_DUMMY" )
175ENDIF(USE_CLUSTER_UDP)
176
177
178# Module extLink
179SET(SOURCES
180        ${SOURCES}
181        include/extLink/dataIO_extLink.h
182        include/extLink/manip_extLink.h
183        src/extLink/manip_extLink.cpp
184)
185IF ( WIN32 )
186        SET(USE_EXTLINK_VCL ON CACHE BOOL "Enable to use the VCL Implementation for the externalLink interface")
187        IF( USE_EXTLINK_VCL )
188                SET(EXTLINK_VCL_INCLUDE_DIR ../VCL_1.0.3.4/source/include/VCL CACHE PATH "Select the INCLUDE directory path for extLink VCL Implementation." )
189                SET(SOURCES
190                        ${SOURCES}
191                        include/extLink/dataIO_extLinkVCL.h
192                        src/extLink/dataIO_extLinkVCL.cpp
193                )
194                INCLUDE_DIRECTORIES(${EXTLINK_VCL_INCLUDE_DIR})
195                ADD_DEFINITIONS( "-DUSE_EXTLINK_VCL" )
196                #Linking: VCL uses #pragma to link, no need for linking configuration in CMAKE
197        ELSE(USE_EXTLINK_VCL)
198                SET(SOURCES
199                        ${SOURCES}
200                        include/extLink/dataIO_extLinkDummy.h
201                        src/extLink/dataIO_extLinkDummy.cpp
202                )
203                UNSET(EXTLINK_VCL_INCLUDE_DIR CACHE)
204                ADD_DEFINITIONS( "-DUSE_EXTLINK_DUMMY" )
205        ENDIF(USE_EXTLINK_VCL)
206ELSE(WIN32)
207        UNSET(EXTLINK_VCL_INCLUDE_DIR CACHE)
208        SET(SOURCES
209                ${SOURCES}
210                include/extLink/dataIO_extLinkDummy.h
211                src/extLink/dataIO_extLinkDummy.cpp
212        )
213        ADD_DEFINITIONS( "-DUSE_EXTLINK_DUMMY" )
214ENDIF(WIN32)
215
216
217
218# Set core sources
219SET(SOURCES
220        ${SOURCES}
221        # Core
222        include/core/visual_core.h
223        src/core/visual_core.cpp
224        src/core/osgVisual.cpp
225        # Util
226        include/util/visual_util.h
227        src/util/visual_util.cpp
228        # Draw 2D
229        include/draw2D/visual_draw2D.h
230        src/draw2D/visual_draw2D.cpp
231        # Debug HUD
232        include/draw2D/visual_debug_hud.h
233        src/draw2D/visual_debug_hud.cpp
234        # Example HUD
235        include/draw2D/visual_hud.h
236        src/draw2D/visual_hud.cpp
237        # Draw 3D
238        include/draw3D/visual_draw3D.h
239        src/draw3D/visual_draw3D.cpp
240        # Object Mounted Manipulator
241        include/manip_ObjectMounted/manip_objectMounted.h
242        src/manip_ObjectMounted/manip_objectMounted.cpp
243        # Objects
244        include/object/visual_object.h
245        include/object/object_updater.h
246        src/object/visual_object.cpp
247        src/object/object_updater.cpp
248        # DataIO
249        include/dataIO/visual_dataIO.h
250        include/dataIO/dataIO_transportContainer.h
251        include/dataIO/dataIO_slot.h
252        include/dataIO/dataIO_executer.h
253        src/dataIO/visual_dataIO.cpp
254        src/dataIO/dataIO_transportContainer.cpp
255        src/dataIO/dataIO_slot.cpp
256        src/dataIO/dataIO_executer.cpp
257)
258
259INCLUDE_DIRECTORIES(include/core include/util include/draw2D include/draw3D include/object include/manip_ObjectMounted include/manip_Spacemouse)
260INCLUDE_DIRECTORIES(include/dataIO include/cluster include/extLink ${OPENSCENEGRAPH_INCLUDE_DIRS} .)
261
262
263# Executable Output
264SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
265ADD_EXECUTABLE(osgVisual ${SOURCES})
266
267
268# Linking
269TARGET_LINK_LIBRARIES(osgVisual ${OPENSCENEGRAPH_LIBRARIES} "OpenGL32.lib")
270IF(USE_SKY_SILVERLINING )
271        TARGET_LINK_LIBRARIES(osgVisual "winmm.lib" debug ${SILVERLINING_LIBRARY_DEBUG} optimized ${SILVERLINING_LIBRARY_RELEASE})
272ENDIF(USE_SKY_SILVERLINING)
273               
274IF(USE_VISTA2D)
275        TARGET_LINK_LIBRARIES(osgVisual  debug ${VISTA2D_LIBRARY_DEBUG} optimized ${VISTA2D_LIBRARY_RELEASE})
276ENDIF(USE_VISTA2D)
277
278
279
280# CMAKE Fix for VS to not prepend build type to path.
281SET_TARGET_PROPERTIES(osgVisual PROPERTIES PREFIX "../")
282SET_TARGET_PROPERTIES( osgVisual PROPERTIES DEBUG_POSTFIX d )
283
284
285# Generating vcproj file, if MSVC to preset debugging parameter  - based on http://stackoverflow.com/questions/1005901/how-to-set-path-environment-variable-using-cmake-and-visual-studio-to-run-test
286IF (MSVC)
287    # Set up a default .user file that contains the debugging setup
288    ## Find user and system name
289        SET(SYSTEM_NAME $ENV{USERDOMAIN} CACHE STRING "Build System Name")
290        SET(USER_NAME $ENV{USERNAME} CACHE STRING "Build System UserName")
291        SET(USERFILE_COMMAND_DEBUG "$(TargetPath)" CACHE STRING "Command to execute on debugging (VS Project settings)" )
292        SET(USERFILE_WORKING_DIRECTORY_DEBUG "bin" CACHE STRING "Working directory on debugging (VS Project settings)" )
293        SET(USERFILE_COMMAND_ARGUMENTS_DEBUG "-C center --window 100 100 800 600 -m D:/OpenSceneGraph/VPB-Testdatensatz/DB_Small/database.ive -p salzburg.path" CACHE STRING "Command arguments (VS Project settings)" )
294        SET(USERFILE_REMOTE_MACHINE_DEBUG ${USER_NAME} CACHE STRING "Remote Debugging Machine (VS Project settings)")
295        IF (DESTINATION_ARCH STREQUAL "x64")
296                SET(USERFILE_ENVIRONMENT "PATH=%OSG_X64%;%PATH%" CACHE STRING "Environment Variables that VS should merge on thy fly with system environment to run osgVisual (VS Project settings)")
297        ENDIF ()
298
299
300    # Only do this if one doesn't already exist
301    SET (USER_FILE ${PROJECT_NAME}.vcproj.${SYSTEM_NAME}.${USER_NAME}.user)
302    IF (NOT EXISTS "${USER_FILE}")
303        message (STATUS "Creating ${USER_FILE} with default debug settings")
304        # These are the configuration variables
305        IF (CMAKE_GENERATOR MATCHES "Win64")
306            SET (USERFILE_PLATFORM "x64")
307        ELSE ()
308            SET (USERFILE_PLATFORM "Win32")
309        ENDIF ()
310
311                # Configure the template file
312                # MSC_VER 1300: MSC 13.0, VC 7.0, VS 2002
313                # MSC_VER 1310: MSC 13.1, VC 7.1, VS 2003
314                # MSC_VER 1400: MSC 14.0, VC 8.0, VS 2005
315                # MSC_VER 1500: MSC 15.0, VC 9.0, VS 2008
316                # MSC_VER 1600: MSC ??.0, VC 10.0, VS 2010
317                IF (MSVC_VERSION EQUAL 1400)
318                        CONFIGURE_FILE(VC80.vcproj.user.template ${USER_FILE} @ONLY)
319                ENDIF()
320                IF (MSVC_VERSION EQUAL 1500)
321                        CONFIGURE_FILE(VC90.vcproj.user.template ${USER_FILE} @ONLY)
322                ENDIF()         
323        ELSE()
324                message (STATUS "Userfile ${USER_FILE} already exist: Skipping")
325    ENDIF()
326ENDIF()
327
328
Note: See TracBrowser for help on using the repository browser.