CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. cmake_minimum_required(VERSION 2.8)
  2. project(double-conversion)
  3. # pick a version #
  4. set(double-conversion_VERSION 1.1.5)
  5. set(double-conversion_SOVERSION_MAJOR 0)
  6. set(double-conversion_SOVERSION_MINOR 0)
  7. set(double-conversion_SOVERSION_PATCH 0)
  8. set(double-conversion_SOVERSION
  9. ${double-conversion_SOVERSION_MAJOR}.${double-conversion_SOVERSION_MINOR}.${double-conversion_SOVERSION_PATCH})
  10. # set paths for install -- empty initially
  11. # Offer the user the choice of overriding the installation directories
  12. set(INSTALL_BIN_DIR CACHE PATH "Installation directory for libraries")
  13. set(INSTALL_LIB_DIR CACHE PATH "Installation directory for libraries")
  14. set(INSTALL_INCLUDE_DIR CACHE PATH "Installation directory for include")
  15. # set suffix for CMake files used for packaging
  16. if(WIN32 AND NOT CYGWIN)
  17. set(INSTALL_CMAKE_DIR CMake)
  18. else()
  19. set(INSTALL_CMAKE_DIR lib/CMake/double-conversion)
  20. endif()
  21. # Make relative paths absolute (needed later)
  22. foreach(p LIB BIN INCLUDE CMAKE)
  23. set(var INSTALL_${p}_DIR)
  24. if(NOT IS_ABSOLUTE "${${var}}")
  25. set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
  26. endif()
  27. endforeach()
  28. #
  29. # set up include dirs
  30. include_directories("${PROJECT_SOURCE_DIR}/src"
  31. "${PROJECT_BINARY_DIR}"
  32. )
  33. # Add src subdirectory
  34. add_subdirectory(src)
  35. #
  36. # set up testing if requested
  37. option(BUILD_TESTING "Build test programs" OFF)
  38. if(BUILD_TESTING)
  39. enable_testing()
  40. include(CTest)
  41. add_subdirectory(test)
  42. endif()
  43. #
  44. # mention the library target as export library
  45. export(TARGETS double-conversion
  46. FILE "${PROJECT_BINARY_DIR}/double-conversionLibraryDepends.cmake")
  47. #
  48. # set this build as an importable package
  49. export(PACKAGE double-conversion)
  50. #
  51. # make a cmake file -- in this case, all that needs defining
  52. # is double-conversion_INCLUDE_DIRS
  53. configure_file(double-conversionBuildTreeSettings.cmake.in
  54. "${PROJECT_BINARY_DIR}/double-conversionBuildTreeSettings.cmake"
  55. @ONLY)
  56. #
  57. # determine where include is relative to the CMake dir in
  58. # in installed tree
  59. file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
  60. "${INSTALL_INCLUDE_DIR}")
  61. #
  62. # sets up config to be used by CMake find_package
  63. configure_file(double-conversionConfig.cmake.in
  64. "${PROJECT_BINARY_DIR}/double-conversionConfig.cmake"
  65. @ONLY)
  66. #
  67. # Export version # checked by find_package
  68. configure_file(double-conversionConfigVersion.cmake.in
  69. "${PROJECT_BINARY_DIR}/double-conversionConfigVersion.cmake"
  70. @ONLY)
  71. #
  72. # install config files for find_package
  73. install(FILES
  74. "${PROJECT_BINARY_DIR}/double-conversionConfig.cmake"
  75. "${PROJECT_BINARY_DIR}/double-conversionConfigVersion.cmake"
  76. DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
  77. #
  78. # generates install cmake files to find libraries in installation.
  79. install(EXPORT double-conversionLibraryDepends DESTINATION
  80. "${INSTALL_CMAKE_DIR}" COMPONENT dev)