CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  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/diffCmd.cpp
  14. src/params.cpp
  15. src/curseOutput.cpp
  16. src/curseSimpleOutput.cpp
  17. src/curseSplitOutput.cpp
  18. src/simpleOutput.cpp
  19. src/linearHistory.cpp
  20. src/outputFlag.cpp
  21. src/streamConsumer.cpp
  22. src/unicode.cpp
  23. src/searchPattern.cpp
  24. src/inputSequence.cpp
  25. src/levenshtein.cpp
  26. src/jsonElement.cpp
  27. src/jsonArray.cpp
  28. src/jsonObject.cpp
  29. src/jsonContainer.cpp
  30. src/jsonObjectEntry.cpp
  31. src/jsonPrimitive.cpp
  32. src/jsonException.cpp
  33. src/except.cpp
  34. src/main.cpp
  35. )
  36. set_property(TARGET jsonstroll PROPERTY RUNTIME_OUTPUT_DIRECTORY ${CUSTOM_BINARY_OUTPUT_DIR})
  37. target_link_libraries(jsonstroll ${ncurses++_LIBRARIES} ${CURSES_LIBRARIES})
  38. # Add tests
  39. enable_testing()
  40. add_executable(json_test
  41. test/src/main.cpp
  42. src/jsonContainer.cpp
  43. src/warning.cpp
  44. src/linearHistory.cpp
  45. src/searchPattern.cpp
  46. src/levenshtein.cpp
  47. src/streamConsumer.cpp
  48. src/unicode.cpp
  49. src/jsonArray.cpp
  50. src/jsonObjectEntry.cpp
  51. src/jsonObject.cpp
  52. src/jsonElement.cpp
  53. src/jsonPrimitive.cpp
  54. src/jsonException.cpp
  55. )
  56. set_property(
  57. TARGET json_test
  58. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  59. )
  60. add_executable(wrapped_test
  61. test/src/wrapped.cpp
  62. )
  63. add_test(json_test test/json_test)
  64. set_property(
  65. TARGET wrapped_test
  66. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  67. )
  68. add_test(wrapped_test test/wrapped_test)
  69. add_executable(optional_test
  70. test/src/optional.cpp
  71. )
  72. add_test(optional_test test/optional_test)
  73. set_property(
  74. TARGET optional_test
  75. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  76. )
  77. add_executable(unicode_test
  78. src/unicode.cpp
  79. src/jsonException.cpp
  80. src/streamConsumer.cpp
  81. src/jsonArray.cpp
  82. src/jsonContainer.cpp
  83. src/jsonObject.cpp
  84. src/jsonObjectEntry.cpp
  85. src/jsonElement.cpp
  86. src/jsonPrimitive.cpp
  87. src/linearHistory.cpp
  88. src/searchPattern.cpp
  89. src/warning.cpp
  90. test/src/unicode.cpp
  91. )
  92. add_test(unicode_test test/unicode_test)
  93. set_property(
  94. TARGET unicode_test
  95. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  96. )
  97. add_executable(levenshtein_test
  98. src/levenshtein.cpp
  99. src/jsonContainer.cpp
  100. src/jsonElement.cpp
  101. src/jsonPrimitive.cpp
  102. src/jsonObjectEntry.cpp
  103. src/searchPattern.cpp
  104. test/src/levenshtein_test.cpp
  105. )
  106. add_test(levenshtein_test test/levenshtein_test)
  107. set_property(
  108. TARGET levenshtein_test
  109. PROPERTY RUNTIME_OUTPUT_DIRECTORY test
  110. )
  111. # Add manual page
  112. find_program (HELP2MAN help2man)
  113. add_custom_target(man ALL)
  114. if (HELP2MAN)
  115. add_definitions(
  116. -DVERSIONDATE=__DATE__
  117. )
  118. add_custom_target(
  119. TARGET man ALL
  120. COMMAND ${CMAKE_COMMAND} -E make_directory ${DOC_OUTPUT}
  121. )
  122. add_custom_command(
  123. TARGET man
  124. SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${CUSTOM_BINARY_OUTPUT_DIR}/jsonstroll
  125. COMMAND help2man ${CMAKE_CURRENT_BINARY_DIR}/${CUSTOM_BINARY_OUTPUT_DIR}/jsonstroll -o ${DOC_OUTPUT}/jsonstroll.1
  126. OUTPUTS ${DOC_OUTPUT}/jsonstroll.1
  127. )
  128. add_custom_command(
  129. TARGET man
  130. SOURCE man
  131. DEPENDS ${DOC_OUTPUT}/jsonstroll.1
  132. )
  133. endif()
  134. # Install
  135. install(
  136. TARGETS jsonstroll
  137. DESTINATION bin
  138. )
  139. install(
  140. FILES ${DOC_OUTPUT}/jsonstroll.1
  141. DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1
  142. )