CMakeLists.txt 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. cmake_minimum_required(VERSION 3.2)
  2. project(door++
  3. VERSION 0.1
  4. LANGUAGES CXX)
  5. # zf_log target (required)
  6. set(HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR})
  7. set(HEADERS door.h)
  8. set(SOURCES door.cpp ansicolor.cpp lines.cpp panel.cpp anyoption.cpp bar.cpp)
  9. # add_subdirectory(opendoors)
  10. ###########
  11. # Debug or Release
  12. ###########
  13. if (NOT CMAKE_BUILD_TYPE)
  14. ## set default to Debug
  15. set(CMAKE_BUILD_TYPE Debug) # override with -DCMAKE_BUILD_TYPE=Release
  16. message("==> CMAKE_BUILD_TYPE empty. Changing it to Debug.")
  17. else()
  18. message("==> CMAKE_BUILD_TYPE == ${CMAKE_BUILD_TYPE}.")
  19. endif()
  20. ## https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html
  21. ## During Debug, use debug version of libstdc++ (asserts on access to invalid iterators, etc!)
  22. set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_GLIBCXX_DEBUG")
  23. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
  24. ##############
  25. # C++ Standard
  26. ##############
  27. set(CMAKE_CXX_STANDARD 14)
  28. # set(CMAKE_CXX_STANDARD 17)
  29. set(CMAKE_CXX_EXTENSIONS ON)
  30. ## set(CMAKE_C_STANDARD 99)
  31. ## set(CMAKE_C_STANDARD_REQUIRED ON)
  32. ## set(CMAKE_C_EXTENSIONS OFF)
  33. if(MSVC)
  34. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /WX")
  35. else()
  36. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Werror -pedantic-errors")
  37. endif()
  38. add_library(door++ ${HEADERS} ${SOURCES})
  39. if(TESTS)
  40. if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/googletest)
  41. message("***")
  42. message("*** ERROR/MISSING *** please run: git clone https://github.com/google/googletest.git")
  43. message("***")
  44. endif()
  45. add_subdirectory(googletest)
  46. option(gtest_build_samples "Build gtest's sample programs." OFF)
  47. option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF)
  48. ### TESTS
  49. add_executable(test-door test-door.cpp)
  50. add_dependencies(test-door gtest)
  51. target_link_libraries(test-door gtest_main door++)
  52. enable_testing()
  53. add_test(NAME test-door
  54. COMMAND test-door)
  55. endif()
  56. # target_link_libraries(door++ pthread)
  57. target_include_directories(door++ PUBLIC $<BUILD_INTERFACE:${HEADERS_DIR}>)
  58. add_executable(door-example examples/door-example.cpp)
  59. target_link_libraries(door-example door++ pthread)
  60. add_executable(menu-example examples/menu-example.cpp)
  61. target_link_libraries(menu-example door++ pthread)
  62. ## if(ZF_LOG_LIBRARY_PREFIX)
  63. ## target_compile_definitions(door++ PRIVATE "ZF_LOG_LIBRARY_PREFIX=${ZF_LOG_LIBRARY_PREFIX}")
  64. ## endif()