CMakeLists.txt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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_executable(jsonstroll
  7. src/main.cpp
  8. src/jsonContainer.cpp
  9. src/warning.cpp
  10. src/params.cpp
  11. src/curseOutput.cpp
  12. src/linearHistory.cpp
  13. src/outputFlag.cpp
  14. src/streamConsumer.cpp
  15. src/jsonArray.cpp
  16. src/jsonObjectEntry.cpp
  17. src/jsonObject.cpp
  18. src/jsonElement.cpp
  19. src/jsonPrimitive.cpp
  20. src/jsonException.cpp
  21. )
  22. set_property(TARGET jsonstroll PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CUSTOM_BINARY_OUTPUT_DIR})
  23. # Add ncurses
  24. SET(CURSES_NEED_NCURSES TRUE)
  25. find_package(Curses)
  26. target_link_libraries(jsonstroll ${ncurses++_LIBRARIES} ${CURSES_LIBRARIES})
  27. include_directories(include ${CURSES_INCLUDE_DIRS})
  28. # Add tests
  29. enable_testing()
  30. add_executable(json_test
  31. test/src/main.cpp
  32. src/jsonContainer.cpp
  33. src/warning.cpp
  34. src/linearHistory.cpp
  35. src/streamConsumer.cpp
  36. src/jsonArray.cpp
  37. src/jsonObjectEntry.cpp
  38. src/jsonObject.cpp
  39. src/jsonElement.cpp
  40. src/jsonPrimitive.cpp
  41. src/jsonException.cpp
  42. )
  43. set_property(
  44. TARGET json_test
  45. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  46. )
  47. add_executable(wrapped_test
  48. test/src/wrapped.cpp
  49. )
  50. add_test(json_test test/json_test)
  51. set_property(
  52. TARGET wrapped_test
  53. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  54. )
  55. add_test(wrapped_test test/wrapped_test)
  56. # Add manual page
  57. find_program (HELP2MAN help2man)
  58. add_custom_target(man ALL)
  59. if (HELP2MAN)
  60. add_definitions(
  61. -DVERSIONDATE=__DATE__
  62. )
  63. add_custom_target(
  64. TARGET man ALL
  65. COMMAND ${CMAKE_COMMAND} -E make_directory ${DOC_OUTPUT}
  66. )
  67. add_custom_command(
  68. TARGET man
  69. SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${CUSTOM_BINARY_OUTPUT_DIR}/jsonstroll
  70. COMMAND help2man ${CMAKE_CURRENT_BINARY_DIR}/${CUSTOM_BINARY_OUTPUT_DIR}/jsonstroll -o ${DOC_OUTPUT}/jsonstroll.1
  71. OUTPUTS ${DOC_OUTPUT}/jsonstroll.1
  72. )
  73. add_custom_command(
  74. TARGET man
  75. SOURCE man
  76. DEPENDS ${DOC_OUTPUT}/jsonstroll.1
  77. )
  78. endif()
  79. # Install
  80. install(
  81. TARGETS jsonstroll
  82. DESTINATION bin
  83. )
  84. install(
  85. FILES ${DOC_OUTPUT}/jsonstroll.1
  86. DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1
  87. )