From: <pat...@us...> - 2013-07-29 20:26:22
|
Revision: 1285 http://sourceforge.net/p/ggt/code/1285 Author: patrickh Date: 2013-07-29 20:26:20 +0000 (Mon, 29 Jul 2013) Log Message: ----------- Add a CMake build for installing GMTL. Submitted by: Doug McCorkle Added Paths: ----------- trunk/CMakeLists.txt trunk/Findpackage.cmake.in trunk/Usepackage.cmake.in trunk/packageBuildTreeSettings.cmake.in trunk/packageConfig.cmake.in trunk/packageConfigVersion.cmake.in Added: trunk/CMakeLists.txt =================================================================== --- trunk/CMakeLists.txt (rev 0) +++ trunk/CMakeLists.txt 2013-07-29 20:26:20 UTC (rev 1285) @@ -0,0 +1,114 @@ +cmake_minimum_required (VERSION 2.8.8) + +project( gmtl ) + +set(gmtl_MAJOR_VERSION 0) +set(gmtl_MINOR_VERSION 7) +set(gmtl_SUB_VERSION 0) +set(gmtl_VERSION ${gmtl_MAJOR_VERSION}.${gmtl_MINOR_VERSION}.${gmtl_SUB_VERSION}) +set(gmtl_PACKAGE_VERSION ${gmtl_VERSION}) + +#Set the include directory so that gmtl can be used as a sub project +if( NOT(${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME}) ) + set(gmtl_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" PARENT_SCOPE) +endif() + +#option(BUILD_EXAMPLE "Build example?" ON) + +set(gmtl_INSTALL_BINDIR bin) + +if(WIN32) + set(gmtl_INSTALL_INCDIR include) +else() + set(gmtl_INSTALL_INCDIR include/gmtl-${gmtl_PACKAGE_VERSION}) +endif() + +include_directories( ${PROJECT_SOURCE_DIR} ) + +############################################################ +# Compile the gmtl header + +file( GLOB_RECURSE gmtl_hdrs "gmtl/*" ) + +source_group( "Header Files" FILES ${gmtl_hdrs}) + +add_custom_target( HEADER_ONLY_TARGET SOURCES ${gmtl_hdrs} ) + +set_target_properties( HEADER_ONLY_TARGET PROPERTIES PROJECT_LABEL "GMTL Headers" ) + +set_target_properties( HEADER_ONLY_TARGET PROPERTIES LINKER_LANGUAGE CXX) + +install(DIRECTORY ${PROJECT_SOURCE_DIR}/${PROJECT_NAME} + DESTINATION ${gmtl_INSTALL_INCDIR} + FILES_MATCHING PATTERN "*.h") + +############################################################ + +############################################################ + +# +# Create and install all of the auto find tools +# ============================================= + +# Export the package for use from the build-tree +# (this registers the build-tree with a global CMake-registry) +export(PACKAGE ${PROJECT_NAME}) + +# Create a gmtlBuildTreeSettings.cmake file for the use from the build tree +configure_file(${PROJECT_SOURCE_DIR}/packageBuildTreeSettings.cmake.in + "${PROJECT_BINARY_DIR}/share/${PROJECT_NAME}/${PROJECT_NAME}BuildTreeSettings.cmake" @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/packageConfigVersion.cmake.in + "${PROJECT_BINARY_DIR}/share/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake" @ONLY) +configure_file(${PROJECT_SOURCE_DIR}/Usepackage.cmake.in + "${PROJECT_BINARY_DIR}/share/${PROJECT_NAME}/Use${PROJECT_NAME}.cmake" @ONLY) + +include(CMakePackageConfigHelpers) +# Create the gmtlConfig.cmake and gmtlConfigVersion files +configure_package_config_file( + ${PROJECT_SOURCE_DIR}/packageConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake + INSTALL_DESTINATION share/${PROJECT_NAME} + PATH_VARS gmtl_INSTALL_INCDIR) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/${PROJECT_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/${PROJECT_NAME}ConfigVersion.cmake + ${CMAKE_CURRENT_BINARY_DIR}/share/${PROJECT_NAME}/Use${PROJECT_NAME}.cmake + DESTINATION share/${PROJECT_NAME} + COMPONENT development) + +# Install the CMake find script for gmtl +configure_file(${PROJECT_SOURCE_DIR}/Findpackage.cmake.in + "${PROJECT_BINARY_DIR}/Find${PROJECT_NAME}.cmake" @ONLY) +install(FILES "${PROJECT_BINARY_DIR}/Find${PROJECT_NAME}.cmake" + DESTINATION "share/${PROJECT_NAME}/extra" + COMPONENT development) + +# Create flagpoll file +set(provides "${PROJECT_NAME}") +set(arch "noarch") +set(version "${gmtl_VERSION}") +set(prefix "\${fp_file_cwd}/../..") +set(exec_prefix "\${prefix}") +set(includedir "\${fp_file_cwd}/../../${gmtl_INSTALL_INCDIR}") + +if(CMAKE_COMPILER_IS_GNUCXX OR ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) ) + set(gmtl_cxxflags "") + set(include_path_flag "-I") +elseif(MSVC) + set(include_path_flag "/I") +else() + message(FATAL_ERROR "Compiler not recognized - can't generate values for Flagpoll file") +endif() + +configure_file(gmtl.fpc.in "${CMAKE_CURRENT_BINARY_DIR}/gmtl.fpc" @ONLY) +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gmtl.fpc" + DESTINATION "share/flagpoll" + COMPONENT development) + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/gmtl.pc" + DESTINATION "lib/pkgconfig" + COMPONENT development) + +install(FILES gmtl-config + DESTINATION ${gmtl_INSTALL_BINDIR} + COMPONENT development) Property changes on: trunk/CMakeLists.txt ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/Findpackage.cmake.in =================================================================== --- trunk/Findpackage.cmake.in (rev 0) +++ trunk/Findpackage.cmake.in 2013-07-29 20:26:20 UTC (rev 1285) @@ -0,0 +1,45 @@ +# - Find a @PROJECT_NAME@ installation or build tree. +# The following variables are set if @PROJECT_NAME@ is found. If @PROJECT_NAME@ is not +# found, @PROJECT_NAME@_FOUND is set to false. +# @PROJECT_NAME@_FOUND - Set to true when @PROJECT_NAME@ is found. +# @PROJECT_NAME@_USE_FILE - CMake file to use @PROJECT_NAME@. +# @PROJECT_NAME@_MAJOR_VERSION - The @PROJECT_NAME@ major version number. +# @PROJECT_NAME@_MINOR_VERSION - The @PROJECT_NAME@ minor version number +# (odd non-release). +# @PROJECT_NAME@_BUILD_VERSION - The @PROJECT_NAME@ patch level +# (meaningless for odd minor). +# @PROJECT_NAME@_INCLUDE_DIRS - Include directories for @PROJECT_NAME@ +# @PROJECT_NAME@_LIBRARY_DIRS - Link directories for @PROJECT_NAME@ libraries + +# The following cache entries must be set by the user to locate @PROJECT_NAME@: +# @PROJECT_NAME@_DIR - The directory containing @PRO...@Co...ake. +# This is either the root of the build tree, +# or the lib directory. This is the +# only cache entry. + + +# Assume not found. +SET(@PROJECT_NAME@_FOUND 0) + +# Construct consitent error messages for use below. +SET(@PROJECT_NAME@_DIR_DESCRIPTION "directory containing @PRO...@Co...ake. This is either the root of the build tree, or PREFIX/lib for an installation.") +SET(@PROJECT_NAME@_DIR_MESSAGE "@PROJECT_NAME@ not found. Set the @PROJECT_NAME@_DIR cmake cache entry to the ${@PROJECT_NAME@_DIR_DESCRIPTION}") + +# Use the Config mode of the find_package() command to find @PROJECT_NAME@Config. +# If this succeeds (possibly because @PROJECT_NAME@_DIR is already set), the +# command will have already loaded @PRO...@Co...ake and set @PROJECT_NAME@_FOUND. +IF(NOT @PROJECT_NAME@_FOUND) + FIND_PACKAGE(@PROJECT_NAME@ QUIET NO_MODULE) +ENDIF(NOT @PROJECT_NAME@_FOUND) + +#----------------------------------------------------------------------------- +IF(NOT @PROJECT_NAME@_FOUND) + # @PROJECT_NAME@ not found, explain to the user how to specify its location. + IF(@PROJECT_NAME@_FIND_REQUIRED) + MESSAGE(FATAL_ERROR ${@PROJECT_NAME@_DIR_MESSAGE}) + ELSE(@PROJECT_NAME@_FIND_REQUIRED) + IF(NOT @PROJECT_NAME@_FIND_QUIETLY) + MESSAGE(STATUS ${@PROJECT_NAME@_DIR_MESSAGE}) + ENDIF(NOT @PROJECT_NAME@_FIND_QUIETLY) + ENDIF(@PROJECT_NAME@_FIND_REQUIRED) +ENDIF(NOT @PROJECT_NAME@_FOUND) Property changes on: trunk/Findpackage.cmake.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/Usepackage.cmake.in =================================================================== --- trunk/Usepackage.cmake.in (rev 0) +++ trunk/Usepackage.cmake.in 2013-07-29 20:26:20 UTC (rev 1285) @@ -0,0 +1,25 @@ +# +# This module is provided as @PROJECT_NAME@_USE_FILE by @PRO...@Co...ake. It can +# be INCLUDEd in a project to load the needed compiler and linker +# settings to use @PROJECT_NAME@. +# + +IF(NOT @PROJECT_NAME@_USE_FILE_INCLUDED) + SET(@PROJECT_NAME@_USE_FILE_INCLUDED 1) + + # Update CMAKE_MODULE_PATH so includes work. + #SET (CMAKE_MODULE_PATH + # ${CMAKE_MODULE_PATH} + # ${@PROJECT_NAME@_CMAKE_DIR}) + + # Add compiler flags needed to use @PROJECT_NAME@. + #SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${@PROJECT_NAME@_REQUIRED_C_FLAGS}") + #SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${@PROJECT_NAME@_REQUIRED_CXX_FLAGS}") + #SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${@PROJECT_NAME@_REQUIRED_EXE_LINKER_FLAGS}") + #SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${@PROJECT_NAME@_REQUIRED_SHARED_LINKER_FLAGS}") + #SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${@PROJECT_NAME@_REQUIRED_MODULE_LINKER_FLAGS}") + + # Add include directories needed to use @PROJECT_NAME@. + INCLUDE_DIRECTORIES(${@PROJECT_NAME@_INCLUDE_DIRS}) + +ENDIF(NOT @PROJECT_NAME@_USE_FILE_INCLUDED) Property changes on: trunk/Usepackage.cmake.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/packageBuildTreeSettings.cmake.in =================================================================== --- trunk/packageBuildTreeSettings.cmake.in (rev 0) +++ trunk/packageBuildTreeSettings.cmake.in 2013-07-29 20:26:20 UTC (rev 1285) @@ -0,0 +1,3 @@ +set(@PROJECT_NAME@_INCLUDE_DIRS + "@PROJECT_SOURCE_DIR@" + "@PROJECT_BINARY_DIR@") Property changes on: trunk/packageBuildTreeSettings.cmake.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/packageConfig.cmake.in =================================================================== --- trunk/packageConfig.cmake.in (rev 0) +++ trunk/packageConfig.cmake.in 2013-07-29 20:26:20 UTC (rev 1285) @@ -0,0 +1,23 @@ +# - Config file for the @PROJECT_NAME@ package +# It defines the following variables +# @PROJECT_NAME@_INCLUDE_DIRS - include directories for @PROJECT_NAME@ +# @PROJECT_NAME@_LIBRARIES - libraries to link against +# @PROJECT_NAME@_EXECUTABLE - the bar executable + +@PACKAGE_INIT@ + +# These are IMPORTED targets created by @PRO...@Li...ake +#set(@PROJECT_NAME@_LIBRARIES "@VES_EXPORT_LIBRARY_TARGETS@" ) +#set(@PROJECT_NAME@_EXECUTABLE test) + +# Compute paths +# get_filename_component(@PROJECT_NAME@_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +if(EXISTS "${PACKAGE_PREFIX_DIR}/CMakeCache.txt") + # In build tree + include("${PACKAGE_PREFIX_DIR}/share/gmtl/@PRO...@Bu...ake") +else() + set_and_check(@PROJECT_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/@gmtl_INSTALL_INCDIR@") +endif() + +# The location of the Use@PROJECT_NAME@.cmake file. +set(@PROJECT_NAME@_USE_FILE "${PACKAGE_PREFIX_DIR}/share/gmtl/Use@PROJECT_NAME@.cmake") Property changes on: trunk/packageConfig.cmake.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/packageConfigVersion.cmake.in =================================================================== --- trunk/packageConfigVersion.cmake.in (rev 0) +++ trunk/packageConfigVersion.cmake.in 2013-07-29 20:26:20 UTC (rev 1285) @@ -0,0 +1,11 @@ +set(PACKAGE_VERSION "@gmtl_PACKAGE_VERSION@") + +# Check whether the requested PACKAGE_FIND_VERSION is compatible +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_EXACT TRUE) + endif() +endif() Property changes on: trunk/packageConfigVersion.cmake.in ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |