From 909aa2b00173423fd07349a2083a9b8710526982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20M=C3=B6bius?= Date: Thu, 28 Apr 2016 10:00:08 +0200 Subject: [PATCH] Updated cmake finders to work with flexible libs location on windows --- cmake/FindGLEW.cmake | 120 +++++++++++++++---------- cmake/FindGLUT.cmake | 210 ++++++++++++++++++++++++------------------- 2 files changed, 195 insertions(+), 135 deletions(-) diff --git a/cmake/FindGLEW.cmake b/cmake/FindGLEW.cmake index 703ec7b0..ff2d6a23 100644 --- a/cmake/FindGLEW.cmake +++ b/cmake/FindGLEW.cmake @@ -1,45 +1,75 @@ -# - Try to find GLEW -# Once done this will define -# -# GLEW_FOUND - system has GLEW -# GLEW_INCLUDE_DIR - the GLEW include directory -# GLEW_LIBRARY_DIR - where the libraries are -# GLEW_LIBRARY - Link these to use GLEW -# - -IF (GLEW_INCLUDE_DIR) - # Already in cache, be silent - SET(GLEW_FIND_QUIETLY TRUE) -ENDIF (GLEW_INCLUDE_DIR) - -if( WIN32 ) - if( MSVC80 ) - set( COMPILER_PATH "C:/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC" ) - endif( MSVC80 ) - if( MSVC71 ) - set( COMPILER_PATH "C:/Program\ Files/Microsoft\ Visual\ Studio\ .NET\ 2003/Vc7" ) - endif( MSVC71 ) - FIND_PATH( GLEW_INCLUDE_DIR gl/glew.h gl/wglew.h - PATHS "c:/glew/include" "c:/libs/glew/include" ${COMPILER_PATH}/PlatformSDK/Include ) - SET( GLEW_NAMES glew32 ) - FIND_LIBRARY( GLEW_LIBRARY - NAMES ${GLEW_NAMES} - PATHS "c:/glew/lib" "c:/libs/glew/lib" ${COMPILER_PATH}/PlatformSDK/Lib ) -else( WIN32 ) - FIND_PATH( GLEW_INCLUDE_DIR GL/glew.h GL/wglew.h - PATHS /usr/local/include /usr/include ) - SET( GLEW_NAMES glew GLEW ) - FIND_LIBRARY( GLEW_LIBRARY - NAMES ${GLEW_NAMES} - PATHS /usr/lib /usr/local/lib ) -endif( WIN32 ) - -GET_FILENAME_COMPONENT( GLEW_LIBRARY_DIR ${GLEW_LIBRARY} PATH ) - -IF (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) - SET(GLEW_FOUND TRUE) -ELSE (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) - SET( GLEW_FOUND FALSE ) - SET( GLEW_LIBRARY_DIR ) -ENDIF (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) - +# - Try to find GLEW +# Once done this will define +# +# GLEW_FOUND - system has GLEW +# GLEW_INCLUDE_DIR - the GLEW include directory +# GLEW_LIBRARY_DIR - where the libraries are +# GLEW_LIBRARY - Link these to use GLEW +# + +IF (GLEW_INCLUDE_DIR) + # Already in cache, be silent + SET(GLEW_FIND_QUIETLY TRUE) +ENDIF (GLEW_INCLUDE_DIR) + +if( WIN32 ) + + # Check if the base path is set + if ( NOT CMAKE_WINDOWS_LIBS_DIR ) + # This is the base directory for windows library search used in the finders we shipp. + set(CMAKE_WINDOWS_LIBS_DIR "c:\libs" CACHE STRING "Default Library search dir on windows." ) + endif() + + if ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*Win64" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2012/x64/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2012/x32/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 12.*Win64" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2013/x64/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 12.*" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2013/x32/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*Win64" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x64/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x32/") + endif() + + if( MSVC80 ) + set( COMPILER_PATH "C:/Program\ Files/Microsoft\ Visual\ Studio\ 8/VC" ) + endif( MSVC80 ) + if( MSVC71 ) + set( COMPILER_PATH "C:/Program\ Files/Microsoft\ Visual\ Studio\ .NET\ 2003/Vc7" ) + endif( MSVC71 ) + + FIND_PATH( GLEW_INCLUDE_DIR gl/glew.h gl/wglew.h + PATHS "${CMAKE_WINDOWS_LIBS_DIR}/glew/include" + "${CMAKE_WINDOWS_LIBS_DIR}/glew-1.6.0/include" + ${COMPILER_PATH}/PlatformSDK/Include + "${VS_SEARCH_PATH}glew-1.10.0/include") + + SET( GLEW_NAMES glew32 ) + FIND_LIBRARY( GLEW_LIBRARY + NAMES ${GLEW_NAMES} + PATHS "${CMAKE_WINDOWS_LIBS_DIR}/glew/lib" + "${CMAKE_WINDOWS_LIBS_DIR}/glew-1.6.0/lib" + ${COMPILER_PATH}/PlatformSDK/Lib + "${VS_SEARCH_PATH}glew-1.10.0/lib" ) + +else( WIN32 ) + FIND_PATH( GLEW_INCLUDE_DIR GL/glew.h GL/wglew.h + PATHS /usr/local/include /usr/include ) + SET( GLEW_NAMES glew GLEW ) + FIND_LIBRARY( GLEW_LIBRARY + NAMES ${GLEW_NAMES} + PATHS /usr/lib /usr/local/lib ) +endif( WIN32 ) + +GET_FILENAME_COMPONENT( GLEW_LIBRARY_DIR ${GLEW_LIBRARY} PATH ) + +IF (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) + SET(GLEW_FOUND TRUE) +ELSE (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) + SET( GLEW_FOUND FALSE ) + SET( GLEW_LIBRARY_DIR ) +ENDIF (GLEW_INCLUDE_DIR AND GLEW_LIBRARY) + diff --git a/cmake/FindGLUT.cmake b/cmake/FindGLUT.cmake index d69ce4a4..f7bfbd6a 100644 --- a/cmake/FindGLUT.cmake +++ b/cmake/FindGLUT.cmake @@ -1,91 +1,121 @@ -# - try to find glut library and include files -# GLUT_INCLUDE_DIR, where to find GL/glut.h, etc. -# GLUT_LIBRARIES, the libraries to link against -# GLUT_FOUND, If false, do not try to use GLUT. -# Also defined, but not for general use are: -# GLUT_glut_LIBRARY = the full path to the glut library. -# GLUT_Xmu_LIBRARY = the full path to the Xmu library. -# GLUT_Xi_LIBRARY = the full path to the Xi Library. - -#============================================================================= -# Copyright 2001-2009 Kitware, Inc. -# -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. -# -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distributed this file outside of CMake, substitute the full -# License text for the above reference.) - -IF (WIN32) - FIND_PATH( GLUT_INCLUDE_DIR NAMES GL/glut.h - PATHS ${GLUT_ROOT_PATH}/include - "C:/libs/glut-3.7/include" ) - FIND_LIBRARY( GLUT_glut_LIBRARY NAMES glut32 glut - PATHS - ${OPENGL_LIBRARY_DIR} - ${GLUT_ROOT_PATH}/Release - "C:/libs/glut-3.7/lib" - ) -ELSE (WIN32) - - IF (APPLE) - # These values for Apple could probably do with improvement. - FIND_PATH( GLUT_INCLUDE_DIR glut.h - /System/Library/Frameworks/GLUT.framework/Versions/A/Headers - ${OPENGL_LIBRARY_DIR} - ) - SET(GLUT_glut_LIBRARY "-framework GLUT" CACHE STRING "GLUT library for OSX") - SET(GLUT_cocoa_LIBRARY "-framework Cocoa" CACHE STRING "Cocoa framework for OSX") - ELSE (APPLE) +# - try to find glut library and include files +# GLUT_INCLUDE_DIR, where to find GL/glut.h, etc. +# GLUT_LIBRARIES, the libraries to link against +# GLUT_FOUND, If false, do not try to use GLUT. +# Also defined, but not for general use are: +# GLUT_glut_LIBRARY = the full path to the glut library. +# GLUT_Xmu_LIBRARY = the full path to the Xmu library. +# GLUT_Xi_LIBRARY = the full path to the Xi Library. + +#============================================================================= +# Copyright 2001-2009 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distributed this file outside of CMake, substitute the full +# License text for the above reference.) + +IF (WIN32) + + # Check if the base path is set + if ( NOT CMAKE_WINDOWS_LIBS_DIR ) + # This is the base directory for windows library search used in the finders we shipp. + set(CMAKE_WINDOWS_LIBS_DIR "c:\libs" CACHE STRING "Default Library search dir on windows." ) + endif() + + if ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*Win64" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2012/x64/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 11.*" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2012/x32/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 12.*Win64" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2013/x64/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 12.*" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2013/x32/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*Win64" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x64/") + elseif ( CMAKE_GENERATOR MATCHES "^Visual Studio 14.*" ) + SET(VS_SEARCH_PATH "${CMAKE_WINDOWS_LIBS_DIR}/vs2015/x32/") + endif() + + + FIND_PATH( GLUT_INCLUDE_DIR NAMES GL/glut.h + PATHS ${GLUT_ROOT_PATH}/include + "${CMAKE_WINDOWS_LIBS_DIR}/glut-3.7/include" + "${VS_SEARCH_PATH}/freeglut-3.0.0/include" ) + "${VS_SEARCH_PATH}/freeglut-2.8.1/include" ) + + FIND_LIBRARY( GLUT_glut_LIBRARY NAMES glut32 glut freeglut + PATHS + ${OPENGL_LIBRARY_DIR} + ${GLUT_ROOT_PATH}/Release + "${CMAKE_WINDOWS_LIBS_DIR}/glut-3.7/lib" + "${VS_SEARCH_PATH}/freeglut-3.0.0/lib" + "${VS_SEARCH_PATH}/freeglut-2.8.1/lib" + ) + + GET_FILENAME_COMPONENT( GLUT_LIBRARY_DIR ${GLUT_glut_LIBRARY} PATH ) + +ELSE (WIN32) + + IF (APPLE) + # These values for Apple could probably do with improvement. + FIND_PATH( GLUT_INCLUDE_DIR glut.h + /System/Library/Frameworks/GLUT.framework/Versions/A/Headers + ${OPENGL_LIBRARY_DIR} + ) + SET(GLUT_glut_LIBRARY "-framework GLUT" CACHE STRING "GLUT library for OSX") + SET(GLUT_cocoa_LIBRARY "-framework Cocoa" CACHE STRING "Cocoa framework for OSX") + ELSE (APPLE) + + FIND_PATH( GLUT_INCLUDE_DIR GL/glut.h + /usr/include/GL + /usr/openwin/share/include + /usr/openwin/include + /opt/graphics/OpenGL/include + /opt/graphics/OpenGL/contrib/libglut + ) + + FIND_LIBRARY( GLUT_glut_LIBRARY glut + /usr/openwin/lib + ) + + FIND_LIBRARY( GLUT_Xi_LIBRARY Xi + /usr/openwin/lib + ) + + FIND_LIBRARY( GLUT_Xmu_LIBRARY Xmu + /usr/openwin/lib + ) + + ENDIF (APPLE) + +ENDIF (WIN32) + +SET( GLUT_FOUND "NO" ) +IF(GLUT_INCLUDE_DIR) + IF(GLUT_glut_LIBRARY) - FIND_PATH( GLUT_INCLUDE_DIR GL/glut.h - /usr/include/GL - /usr/openwin/share/include - /usr/openwin/include - /opt/graphics/OpenGL/include - /opt/graphics/OpenGL/contrib/libglut - ) - - FIND_LIBRARY( GLUT_glut_LIBRARY glut - /usr/openwin/lib - ) - - FIND_LIBRARY( GLUT_Xi_LIBRARY Xi - /usr/openwin/lib - ) - - FIND_LIBRARY( GLUT_Xmu_LIBRARY Xmu - /usr/openwin/lib - ) - - ENDIF (APPLE) - -ENDIF (WIN32) - -SET( GLUT_FOUND "NO" ) -IF(GLUT_INCLUDE_DIR) - IF(GLUT_glut_LIBRARY) - - SET( GLUT_LIBRARIES - ${GLUT_glut_LIBRARY} - ${GLUT_cocoa_LIBRARY} - ) - SET( GLUT_FOUND "YES" ) - - #The following deprecated settings are for backwards compatibility with CMake1.4 - SET (GLUT_LIBRARY ${GLUT_LIBRARIES}) - SET (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR}) - - ENDIF(GLUT_glut_LIBRARY) -ENDIF(GLUT_INCLUDE_DIR) - -MARK_AS_ADVANCED( - GLUT_INCLUDE_DIR - GLUT_glut_LIBRARY - GLUT_Xmu_LIBRARY - GLUT_Xi_LIBRARY - ) + SET( GLUT_LIBRARIES + ${GLUT_glut_LIBRARY} + ${GLUT_cocoa_LIBRARY} + ) + SET( GLUT_FOUND "YES" ) + + #The following deprecated settings are for backwards compatibility with CMake1.4 + SET (GLUT_LIBRARY ${GLUT_LIBRARIES}) + SET (GLUT_INCLUDE_PATH ${GLUT_INCLUDE_DIR}) + + ENDIF(GLUT_glut_LIBRARY) +ENDIF(GLUT_INCLUDE_DIR) + +MARK_AS_ADVANCED( + GLUT_INCLUDE_DIR + GLUT_glut_LIBRARY + GLUT_Xmu_LIBRARY + GLUT_Xi_LIBRARY + )