CMakeLists.txt 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. cmake_minimum_required( VERSION 3.1 )
  2. set( ARGS_VERSION "5.0.1" )
  3. option( BUILD_EXAMPLES "Build examples? Default ON." ON )
  4. option( BUILD_TESTS "Build tests? Default ON." ON )
  5. if( NOT CMAKE_BUILD_TYPE )
  6. set( CMAKE_BUILD_TYPE "Release"
  7. CACHE STRING "Choose the type of build."
  8. FORCE )
  9. endif( NOT CMAKE_BUILD_TYPE )
  10. set( CMAKE_CXX_STANDARD 14 )
  11. set( CMAKE_CXX_STANDARD_REQUIRED ON )
  12. file( COPY runtests.rb
  13. DESTINATION ${CMAKE_CURRENT_BINARY_DIR} )
  14. project( Args )
  15. if( ${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME} )
  16. if( BUILD_EXAMPLES )
  17. add_subdirectory( samples )
  18. endif()
  19. if( BUILD_TESTS )
  20. enable_testing()
  21. add_subdirectory( tests )
  22. endif()
  23. add_library( Args INTERFACE )
  24. install( DIRECTORY Args
  25. DESTINATION include
  26. )
  27. install( FILES
  28. Args/all.hpp
  29. Args/api.hpp
  30. Args/arg_as_command.hpp
  31. Args/arg.hpp
  32. Args/arg_iface.hpp
  33. Args/cmd_line.hpp
  34. Args/command.hpp
  35. Args/context.hpp
  36. Args/enums.hpp
  37. Args/exceptions.hpp
  38. Args/group_iface.hpp
  39. Args/groups.hpp
  40. Args/help.hpp
  41. Args/help_printer.hpp
  42. Args/help_printer_iface.hpp
  43. Args/multi_arg.hpp
  44. Args/types.hpp
  45. Args/utils.hpp
  46. Args/value_utils.hpp
  47. DESTINATION
  48. include/Args
  49. )
  50. install( TARGETS Args
  51. EXPORT ArgsTargets
  52. RUNTIME DESTINATION bin
  53. ARCHIVE DESTINATION lib
  54. LIBRARY DESTINATION lib
  55. INCLUDES DESTINATION include
  56. )
  57. install( EXPORT ArgsTargets
  58. DESTINATION lib/cmake/Args
  59. )
  60. include( CMakePackageConfigHelpers )
  61. write_basic_package_version_file(
  62. "${CMAKE_CURRENT_BINARY_DIR}/ArgsConfigVersion.cmake"
  63. VERSION ${ARGS_VERSION}
  64. COMPATIBILITY AnyNewerVersion )
  65. configure_package_config_file( ArgsConfig.cmake.in
  66. "${CMAKE_CURRENT_BINARY_DIR}/ArgsConfig.cmake"
  67. INSTALL_DESTINATION lib/cmake/Args )
  68. install( FILES ${PROJECT_BINARY_DIR}/ArgsConfig.cmake
  69. ${PROJECT_BINARY_DIR}/ArgsConfigVersion.cmake
  70. DESTINATION lib/cmake/Args )
  71. else()
  72. set( Args_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE )
  73. endif( ${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME} )