CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. cmake_minimum_required(VERSION 3.5)
  2. project(horrible-harry)
  3. ###########
  4. # Debug or Release
  5. ###########
  6. if (NOT CMAKE_BUILD_TYPE)
  7. ## set default to Debug
  8. set(CMAKE_BUILD_TYPE Debug) # override with -DCMAKE_BUILD_TYPE=Release
  9. message("==> CMAKE_BUILD_TYPE empty. Changing it to Debug.")
  10. else()
  11. message("==> CMAKE_BUILD_TYPE == ${CMAKE_BUILD_TYPE}.")
  12. endif()
  13. ## https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html
  14. ## During Debug, use debug version of libstdc++ (asserts on access to invalid iterators, etc!)
  15. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG")
  16. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
  17. ###########
  18. # Suppress certain warnings
  19. ###########
  20. # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
  21. # rm CMakeCache.txt and cmake . if you change any of the C++ Standards.
  22. ##############
  23. # C++ Standard
  24. ##############
  25. set(CMAKE_CXX_STANDARD 14)
  26. ## set(CMAKE_CXX_STANDARD 17)
  27. set(CMAKE_CXX_EXTENSIONS ON)
  28. set(DISABLE_BUFFER_DEBUG ON CACHE BOOL "Turn off buffer debugging")
  29. # Enable testing
  30. # set(BUILD_TESTING ON)
  31. # include(CTest)
  32. ### ADD gtest
  33. add_subdirectory(googletest)
  34. ### TESTS
  35. add_executable(test-lastseen test-lastseen.cpp lastseen.cpp)
  36. add_dependencies(test-lastseen gtest)
  37. target_link_libraries(test-lastseen gtest_main)
  38. enable_testing()
  39. add_test(NAME test-lastseen
  40. COMMAND test-lastseen)
  41. add_executable(test-utils test-utils.cpp utils.cpp)
  42. add_dependencies(test-utils gtest)
  43. target_link_libraries(test-utils gtest_main)
  44. if(${DISABLE_BUFFER_DEBUG})
  45. target_compile_definitions(test-utils PUBLIC NO_BUFFER_DEBUG=1)
  46. endif()
  47. add_test(NAME test-utils
  48. COMMAND test-utils)
  49. add_executable(test-render test-render.cpp render.cpp terminal.cpp utils.cpp)
  50. add_dependencies(test-render gtest)
  51. target_link_libraries(test-render gtest_main)
  52. target_link_libraries(test-render zf_log)
  53. if(${DISABLE_BUFFER_DEBUG})
  54. target_compile_definitions(test-render PUBLIC NO_BUFFER_DEBUG=1)
  55. endif()
  56. add_executable(test-mangle test-mangle.cpp wordplay.cpp render.cpp terminal.cpp charman.cpp lastseen.cpp logs_utils.cpp)
  57. add_dependencies(test-mangle gtest)
  58. target_link_libraries(test-mangle gtest_main)
  59. target_link_libraries(test-mangle zf_log)
  60. if(${DISABLE_BUFFER_DEBUG})
  61. target_compile_definitions(test-mangle PUBLIC NO_BUFFER_DEBUG=1)
  62. endif()
  63. add_test(NAME test-render
  64. COMMAND test-render)
  65. add_test(NAME test-mangle COMMAND test-mangle)
  66. # include(FetchContent)
  67. #
  68. # FetchContent_Populate(
  69. # zf_log
  70. # GIT_REPOSITORY https://github.com/wonder-mice/zf_log.git
  71. # SOURCE_DIR zf_log
  72. # )
  73. # add_subdirectory(${zf_log_SOURCE_DIR}/src zf_log)
  74. # This works, if zf_log is pulled in.
  75. add_subdirectory(zf_log)
  76. # Example for how to define a test which uses gtest_gmock
  77. # add_executable(mytest tester.cpp)
  78. # target_link_libraries(mytest gmock_main)
  79. # Here's how to add all *.h and *.cpp files
  80. # to a project:
  81. #
  82. # file(GLOB SOURCES
  83. # header-folder/*.h
  84. # source-folder/*.cpp
  85. # )
  86. # add_executable(yourProj ${SOURCES})
  87. add_custom_command(
  88. OUTPUT images.h
  89. COMMAND ./build_images.sh
  90. DEPENDS ansi-to-src ghost.ans ghead.ans wolf.ans panther.ans bat.ans skull.ans skull-blink.ans icu.ans
  91. COMMENT "Generating images.h"
  92. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  93. )
  94. add_executable(hharry hharry.cpp lastseen.cpp terminal.cpp render.cpp utils.cpp images.h wordplay.cpp charman.cpp logs_utils.cpp)
  95. target_link_libraries(hharry util)
  96. target_link_libraries(hharry zf_log)
  97. # target_compile_definitions(hharry PUBLIC ZF_LOG_DEF_LEVEL=ZF_LOG_INFO)
  98. target_compile_definitions(hharry PUBLIC ZF_LOG_DEF_LEVEL=ZF_LOG_VERBOSE)
  99. if(${DISABLE_BUFFER_DEBUG})
  100. target_compile_definitions(hharry PUBLIC NO_BUFFER_DEBUG=1)
  101. endif()
  102. add_executable(try-re try-re.c)
  103. add_executable(ansi-color ansi-color.c)
  104. add_executable(ansi-to-src ansi-to-src.cpp utils.cpp)
  105. if(${DISABLE_BUFFER_DEBUG})
  106. target_compile_definitions(ansi-to-src PUBLIC NO_BUFFER_DEBUG=1)
  107. endif()
  108. add_executable(images images.cpp utils.cpp images.h)
  109. target_link_libraries(images zf_log)
  110. if(${DISABLE_BUFFER_DEBUG})
  111. target_compile_definitions(images PUBLIC NO_BUFFER_DEBUG=1)
  112. endif()