Permalink
Browse files

[cmake] added install targets

  • Loading branch information...
simogasp authored and josch committed May 14, 2017
1 parent f061619 commit 4299e8fa43bb1e67370be36cad4b21115ab88af9
Showing with 93 additions and 7 deletions.
  1. +89 −7 CMakeLists.txt
  2. +4 −0 cmake/Config.cmake.in
View
@@ -1,13 +1,11 @@
cmake_minimum_required(VERSION 2.8)
cmake_minimum_required(VERSION 2.8.12)
project(glui)
set(PROJECT_VERSION 2.37)
find_package(GLUT REQUIRED)
find_package(OpenGL REQUIRED)
include_directories(${GLUT_INCLUDE_DIR}/include)
include_directories(${CMAKE_SOURCE_DIR}/include)
SET(GLUI_SRCS
algebra3.cpp
arcball.cpp
@@ -44,15 +42,37 @@ SET(GLUI_SRCS
viewmodel.cpp
)
add_library(glui_obj OBJECT ${GLUI_SRCS})
target_include_directories(glui_obj
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
${OPENGL_INCLUDE_DIR}
${GLUT_INCLUDE_DIR})
# we need to enable -fPIC this so that the same object code can be used to
# create static *and* shared libraries without double compilation
set_property(TARGET glui_obj PROPERTY POSITION_INDEPENDENT_CODE 1)
set_target_properties( glui_obj PROPERTIES POSITION_INDEPENDENT_CODE 1)
add_library(glui SHARED $<TARGET_OBJECTS:glui_obj>)
target_link_libraries(glui ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
target_include_directories(glui
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include>"
${OPENGL_INCLUDE_DIR}
${GLUT_INCLUDE_DIR})
target_link_libraries(glui PUBLIC ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
set_target_properties(glui PROPERTIES
DEBUG_POSTFIX "d"
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION})
add_library(glui_static STATIC $<TARGET_OBJECTS:glui_obj>)
target_link_libraries(glui_static ${GLUT_LIBRARIES})
target_include_directories(glui_static
PUBLIC
"$<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/include>"
"$<INSTALL_INTERFACE:include>"
${OPENGL_INCLUDE_DIR}
${GLUT_INCLUDE_DIR})
target_link_libraries(glui_static PUBLIC ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
set_target_properties(glui_static PROPERTIES DEBUG_POSTFIX "d")
add_executable(ppm2array tools/ppm.cpp tools/ppm2array.cpp)
target_link_libraries(ppm2array)
@@ -69,3 +89,65 @@ add_executable(example5 example/example5.cpp)
target_link_libraries(example5 glui_static ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
add_executable(example6 example/example6.cpp)
target_link_libraries(example6 glui_static ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
####
# Installation
set(config_install_dir "lib/cmake/${PROJECT_NAME}")
set(include_install_dir "include")
set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
# Configuration
set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
set(targets_export_name "${PROJECT_NAME}Targets")
set(namespace "${PROJECT_NAME}::")
# Include module with fuction 'write_basic_package_version_file'
include(CMakePackageConfigHelpers)
# Configure '<PROJECT-NAME>ConfigVersion.cmake'
write_basic_package_version_file(
"${version_config}" VERSION ${PROJECT_VERSION} COMPATIBILITY SameMajorVersion
)
# Configure '<PROJECT-NAME>Config.cmake'
configure_package_config_file(
"cmake/Config.cmake.in"
"${project_config}"
INSTALL_DESTINATION "${config_install_dir}"
)
# Targets:
install(
TARGETS glui_static glui
EXPORT "${targets_export_name}"
LIBRARY DESTINATION "lib"
ARCHIVE DESTINATION "lib"
RUNTIME DESTINATION "bin"
INCLUDES DESTINATION "${include_install_dir}"
)
# Headers:
install(
DIRECTORY "${CMAKE_SOURCE_DIR}/include/"
DESTINATION "${include_install_dir}"
FILES_MATCHING PATTERN "*.h"
)
# Config
install(
FILES "${project_config}" "${version_config}"
DESTINATION "${config_install_dir}"
)
# Config
install(
EXPORT "${targets_export_name}"
NAMESPACE "${namespace}"
DESTINATION "${config_install_dir}"
)
View
@@ -0,0 +1,4 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
check_required_components("@PROJECT_NAME@")

0 comments on commit 4299e8f

Please sign in to comment.