CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. cmake_minimum_required(VERSION 2.8)
  2. SET (CUSTOM_BINARY_OUTPUT_DIR bin)
  3. SET (DOC_OUTPUT doc/)
  4. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra")
  5. set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
  6. # Add ncurses
  7. SET(CURSES_NEED_NCURSES TRUE)
  8. find_package(Curses)
  9. include_directories(include ${CURSES_INCLUDE_DIRS})
  10. # jsonstroll
  11. add_executable(jsonstroll
  12. src/warning.cpp
  13. src/params.cpp
  14. src/curseOutput.cpp
  15. src/curseSimpleOutput.cpp
  16. src/curseSplitOutput.cpp
  17. src/linearHistory.cpp
  18. src/outputFlag.cpp
  19. src/streamConsumer.cpp
  20. src/searchPattern.cpp
  21. src/inputSequence.cpp
  22. src/jsonElement.cpp
  23. src/jsonArray.cpp
  24. src/jsonObject.cpp
  25. src/jsonContainer.cpp
  26. src/jsonObjectEntry.cpp
  27. src/jsonPrimitive.cpp
  28. src/jsonException.cpp
  29. src/except.cpp
  30. src/main.cpp
  31. )
  32. set_property(TARGET jsonstroll PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CUSTOM_BINARY_OUTPUT_DIR})
  33. target_link_libraries(jsonstroll ${ncurses++_LIBRARIES} ${CURSES_LIBRARIES})
  34. # Add tests
  35. enable_testing()
  36. add_executable(json_test
  37. test/src/main.cpp
  38. src/jsonContainer.cpp
  39. src/warning.cpp
  40. src/linearHistory.cpp
  41. src/searchPattern.cpp
  42. src/streamConsumer.cpp
  43. src/jsonArray.cpp
  44. src/jsonObjectEntry.cpp
  45. src/jsonObject.cpp
  46. src/jsonElement.cpp
  47. src/jsonPrimitive.cpp
  48. src/jsonException.cpp
  49. )
  50. set_property(
  51. TARGET json_test
  52. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  53. )
  54. add_executable(wrapped_test
  55. test/src/wrapped.cpp
  56. )
  57. add_test(json_test test/json_test)
  58. set_property(
  59. TARGET wrapped_test
  60. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  61. )
  62. add_test(wrapped_test test/wrapped_test)
  63. add_executable(optional_test
  64. test/src/optional.cpp
  65. )
  66. add_test(optional_test test/optional_test)
  67. set_property(
  68. TARGET optional_test
  69. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  70. )
  71. # Add manual page
  72. find_program (HELP2MAN help2man)
  73. add_custom_target(man ALL)
  74. if (HELP2MAN)
  75. add_definitions(
  76. -DVERSIONDATE=__DATE__
  77. )
  78. add_custom_target(
  79. TARGET man ALL
  80. COMMAND ${CMAKE_COMMAND} -E make_directory ${DOC_OUTPUT}
  81. )
  82. add_custom_command(
  83. TARGET man
  84. SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${CUSTOM_BINARY_OUTPUT_DIR}/jsonstroll
  85. COMMAND help2man ${CMAKE_CURRENT_BINARY_DIR}/${CUSTOM_BINARY_OUTPUT_DIR}/jsonstroll -o ${DOC_OUTPUT}/jsonstroll.1
  86. OUTPUTS ${DOC_OUTPUT}/jsonstroll.1
  87. )
  88. add_custom_command(
  89. TARGET man
  90. SOURCE man
  91. DEPENDS ${DOC_OUTPUT}/jsonstroll.1
  92. )
  93. endif()
  94. # Install
  95. install(
  96. TARGETS jsonstroll
  97. DESTINATION bin
  98. )
  99. install(
  100. FILES ${DOC_OUTPUT}/jsonstroll.1
  101. DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1
  102. )