CMakeLists.txt 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. cmake_minimum_required(VERSION 3.8)
  2. if(DEFINED PROJECT_NAME)
  3. set(SUBPROJECT OFF)
  4. endif()
  5. project(qtpromise1)
  6. list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
  7. find_package(QT 5.15.2 NAMES Qt6 Qt5 REQUIRED)
  8. find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
  9. set(CMAKE_AUTOMOC ON)
  10. set(CMAKE_CXX_STANDARD 11)
  11. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  12. add_library(qtpromise INTERFACE)
  13. add_library(qtpromise::qtpromise ALIAS qtpromise)
  14. target_link_libraries(qtpromise INTERFACE Qt${QT_VERSION_MAJOR}::Core)
  15. target_include_directories(qtpromise INTERFACE "${CMAKE_CURRENT_LIST_DIR}/include")
  16. add_definitions(
  17. -DQT_DEPRECATED_WARNINGS
  18. -DQT_NO_KEYWORDS
  19. )
  20. # https://github.com/simonbrunel/qtpromise/issues/10
  21. if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
  22. # https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
  23. add_compile_options(
  24. -Werror
  25. -Wpedantic
  26. -Wall
  27. -Wextra
  28. -Wconversion
  29. -Wdouble-promotion
  30. -Wformat=2
  31. -Wlogical-op
  32. -Wmissing-noreturn
  33. -Wold-style-cast
  34. # -Wshadow # disabled due to many findings in the current code
  35. -Wsign-conversion
  36. -Wswitch-default
  37. -Wunused-local-typedefs
  38. -pedantic-errors
  39. )
  40. # https://github.com/Barro/compiler-warnings/blob/master/gcc/warnings-gcc-6.txt
  41. if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 6)
  42. add_compile_options(
  43. -Wduplicated-cond
  44. )
  45. endif()
  46. # https://github.com/Barro/compiler-warnings/blob/master/gcc/warnings-gcc-7.txt
  47. if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7)
  48. add_compile_options(
  49. -Wduplicated-branches
  50. )
  51. endif()
  52. elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
  53. # https://clang.llvm.org/docs/DiagnosticsReference.html
  54. add_compile_options(
  55. -Wall
  56. -Wextra
  57. -Wpedantic
  58. -Wsuggest-destructor-override
  59. -Wsuggest-override
  60. )
  61. elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
  62. # https://docs.microsoft.com/en-us/cpp/build/reference/compiler-option-warning-level
  63. add_compile_options(
  64. /WX
  65. )
  66. endif()
  67. if(NOT SUBPROJECT)
  68. enable_testing()
  69. endif()