mirror of
https://github.com/Perlmint/glew-cmake.git
synced 2025-04-06 00:42:04 +00:00
Currently (well, at least on Windows), the created DLL files aren't installed to the correct directory after a build. The dll files are installed to the 'lib' directory. Which actually is the place for the static library or the shared library's symbols file (.lib). The shared library runtimes should be installed to the 'bin' output directory, as proposed in this PR. It also follows convention as used in other notable libraries as libpng, libogg/vorbis, freetype, zlib, tinyxml, etc. See the ```CONFIGURATIONS``` option in [Install command introduction in the CMake manual](https://cmake.org/cmake/help/v3.14/command/install.html#introduction), .
123 lines
4.3 KiB
CMake
123 lines
4.3 KiB
CMake
CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
|
|
PROJECT( "glew" )
|
|
|
|
SET( SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src )
|
|
SET( INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include )
|
|
SET( RC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build )
|
|
|
|
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
|
|
SET( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
|
|
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
|
|
|
|
OPTION( glew-cmake_BUILD_SHARED "Build the shared glew library" ON )
|
|
OPTION( glew-cmake_BUILD_STATIC "Build the static glew library" ON )
|
|
OPTION( glew-cmake_BUILD_SINGLE_CONTEXT "Build the single context glew library" ON )
|
|
OPTION( glew-cmake_BUILD_MULTI_CONTEXT "Build the multi context glew library" ON )
|
|
|
|
|
|
SET( LIBGLEW_SRCS ${SRC_DIR}/glew.c )
|
|
|
|
IF( WIN32 )
|
|
ADD_DEFINITIONS( -DWIN32_MEAN_AND_LEAN -DVC_EXTRALEAN -DGLEW_BUILD -D_CRT_SECURE_NO_WARNINGS )
|
|
ENDIF( )
|
|
|
|
IF( MSVC )
|
|
LIST( APPEND LIBGLEW_SRCS ${RC_DIR}/glew.rc )
|
|
ENDIF( )
|
|
|
|
IF( NOT USE_GLU )
|
|
ADD_DEFINITIONS( -DGLEW_NO_GLU )
|
|
ENDIF( )
|
|
|
|
IF( WIN32 )
|
|
SET( GL_LIBRARY opengl32 )
|
|
ELSEIF( APPLE )
|
|
FIND_LIBRARY( GL_LIBRARY OpenGL )
|
|
FIND_LIBRARY( AGL_LIBRARY AGL )
|
|
SET( PLATFORM_SPECIFIC_LIBRARIES ${AGL_LIBRARY} )
|
|
ELSE( )
|
|
SET( GL_LIBRARY GL )
|
|
SET( PLATFORM_SPECIFIC_LIBRARIES X11 dl Xext )
|
|
ENDIF( )
|
|
|
|
IF ( glew-cmake_BUILD_STATIC )
|
|
IF ( glew-cmake_BUILD_SINGLE_CONTEXT )
|
|
ADD_LIBRARY( libglew_static STATIC ${LIBGLEW_SRCS} )
|
|
|
|
SET_TARGET_PROPERTIES( libglew_static PROPERTIES
|
|
ARCHIVE_OUTPUT_NAME "glew"
|
|
DEBUG_POSTFIX d )
|
|
TARGET_INCLUDE_DIRECTORIES( libglew_static PUBLIC ${INCLUDE_DIR} )
|
|
TARGET_LINK_LIBRARIES( libglew_static ${GL_LIBRARY} ${PLATFORM_SPECIFIC_LIBRARIES} )
|
|
INSTALL( TARGETS libglew_static DESTINATION lib )
|
|
ENDIF ( )
|
|
|
|
IF ( glew-cmake_BUILD_MULTI_CONTEXT )
|
|
ADD_LIBRARY( libglewmx_static STATIC ${LIBGLEW_SRCS} )
|
|
|
|
SET_TARGET_PROPERTIES( libglewmx_static PROPERTIES
|
|
ARCHIVE_OUTPUT_NAME "glewmx"
|
|
DEBUG_POSTFIX d )
|
|
TARGET_COMPILE_DEFINITIONS( libglewmx_static INTERFACE GLEW_MX)
|
|
TARGET_INCLUDE_DIRECTORIES( libglewmx_static PUBLIC ${INCLUDE_DIR} )
|
|
TARGET_LINK_LIBRARIES( libglewmx_static ${GL_LIBRARY} ${PLATFORM_SPECIFIC_LIBRARIES} )
|
|
INSTALL( TARGETS libglewmx_static DESTINATION lib )
|
|
ENDIF ( )
|
|
ENDIF ( )
|
|
|
|
IF ( glew-cmake_BUILD_SHARED )
|
|
IF ( glew-cmake_BUILD_SINGLE_CONTEXT )
|
|
ADD_LIBRARY( libglew_shared SHARED ${LIBGLEW_SRCS} )
|
|
|
|
SET_TARGET_PROPERTIES( libglew_shared PROPERTIES
|
|
RUNTIME_OUTPUT_NAME "glew"
|
|
LIBRARY_OUTPUT_NAME "glew"
|
|
DEBUG_POSTFIX d )
|
|
|
|
TARGET_INCLUDE_DIRECTORIES( libglew_shared PUBLIC ${INCLUDE_DIR} )
|
|
TARGET_LINK_LIBRARIES( libglew_shared ${GL_LIBRARY} ${PLATFORM_SPECIFIC_LIBRARIES} )
|
|
INSTALL( TARGETS libglew_shared DESTINATION lib )
|
|
INSTALL( TARGETS libglew_shared RUNTIME DESTINATION bin )
|
|
ENDIF ( )
|
|
|
|
IF ( glew-cmake_BUILD_MULTI_CONTEXT )
|
|
ADD_LIBRARY( libglewmx_shared SHARED ${LIBGLEW_SRCS} )
|
|
|
|
SET_TARGET_PROPERTIES( libglewmx_shared PROPERTIES
|
|
RUNTIME_OUTPUT_NAME "glewmx"
|
|
LIBRARY_OUTPUT_NAME "glewmx"
|
|
DEBUG_POSTFIX d )
|
|
|
|
TARGET_COMPILE_DEFINITIONS( libglewmx_shared INTERFACE GLEW_MX)
|
|
TARGET_INCLUDE_DIRECTORIES( libglewmx_shared PUBLIC ${INCLUDE_DIR} )
|
|
TARGET_LINK_LIBRARIES( libglewmx_shared ${GL_LIBRARY} ${PLATFORM_SPECIFIC_LIBRARIES} )
|
|
INSTALL( TARGETS libglewmx_shared DESTINATION lib )
|
|
INSTALL( TARGETS libglewmx_shared RUNTIME DESTINATION bin )
|
|
ENDIF ( )
|
|
ENDIF ( )
|
|
|
|
FILE( GLOB PUBLIC_HEADERS "include/GL/*.h" )
|
|
INSTALL( FILES ${PUBLIC_HEADERS} DESTINATION include/GL/ )
|
|
|
|
IF( ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_SOURCE_DIR} AND NOT ONLY_LIBS )
|
|
SET( GLEWINFO_SRCS ${SRC_DIR}/glewinfo.c )
|
|
SET( VISUALINFO_SRCS ${SRC_DIR}/visualinfo.c )
|
|
IF( MSVS )
|
|
LIST( APPEND GLEWINFO_SRCS ${RC_DIR}/glewinfo.rc )
|
|
LIST( APPEND VISUALINFO_SRCS ${RC_DIR}/visualinfo.rc )
|
|
ENDIF( )
|
|
|
|
ADD_EXECUTABLE( glewinfo ${GLEWINFO_SRCS} )
|
|
ADD_EXECUTABLE( visualinfo ${VISUALINFO_SRCS} )
|
|
|
|
IF ( glew-cmake_BUILD_STATIC )
|
|
TARGET_LINK_LIBRARIES( glewinfo libglew_static )
|
|
TARGET_LINK_LIBRARIES( visualinfo libglew_static )
|
|
ELSE ( )
|
|
TARGET_LINK_LIBRARIES( glewinfo libglew_shared )
|
|
TARGET_LINK_LIBRARIES( visualinfo libglew_shared )
|
|
ENDIF ( )
|
|
|
|
INSTALL( TARGETS glewinfo visualinfo DESTINATION bin )
|
|
ENDIF( )
|