CMakeLists.txt 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. cmake_minimum_required(VERSION 3.13)
  2. # cmake_policy(SET CMP0076 OLD)
  3. # This can be read from ${PROJECT_NAME} after project() is called
  4. if(APPLE)
  5. set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version")
  6. endif()
  7. project(
  8. flameshot
  9. VERSION 0.8.5.5
  10. LANGUAGES CXX)
  11. set(PROJECT_NAME_CAPITALIZED "Flameshot")
  12. # Configuration options
  13. set(DEFAULT_RUN_IN_PLACE FALSE)
  14. if(WIN32)
  15. set(DEFAULT_RUN_IN_PLACE TRUE)
  16. # For Windows RC file.
  17. add_definitions(-DFLAMESHOT_VERSION_MAJOR=${CMAKE_PROJECT_VERSION_MAJOR})
  18. add_definitions(-DFLAMESHOT_VERSION_MINOR=${CMAKE_PROJECT_VERSION_MINOR})
  19. add_definitions(-DFLAMESHOT_VERSION_BUGFIX=${CMAKE_PROJECT_VERSION_PATCH})
  20. add_definitions(-DFLAMESHOT_VERSION_BUILD=1)
  21. add_definitions(-DFLAMESHOT_VERSION_STRING="${PROJECT_VERSION}")
  22. elseif(APPLE)
  23. set(Qt5_DIR "$(brew --prefix qt5)/lib/cmake/Qt5/" CACHE PATH "directory where Qt5Config.cmake exists.")
  24. set(CMAKE_MACOSX_BUNDLE ON)
  25. set(CMAKE_MACOSX_RPATH ON)
  26. endif()
  27. set(RUN_IN_PLACE ${DEFAULT_RUN_IN_PLACE} CACHE BOOL
  28. "Run directly in source directory structure")
  29. option(GENERATE_TS "Regenerate translation source files" OFF)
  30. include(cmake/StandardProjectSettings.cmake)
  31. add_library(project_options INTERFACE)
  32. target_compile_features(project_options INTERFACE cxx_std_17)
  33. add_library(project_warnings INTERFACE)
  34. # enable cache system
  35. include(cmake/Cache.cmake)
  36. # standard compiler warnings
  37. include(cmake/CompilerWarnings.cmake)
  38. # set_project_warnings(project_warnings)
  39. # sanitizer options if supported by compiler
  40. include(cmake/Sanitizers.cmake)
  41. enable_sanitizers(project_options)
  42. # allow for static analysis options include(cmake/StaticAnalyzers.cmake)
  43. add_subdirectory(src)
  44. # CPack
  45. set(CPACK_PACKAGE_VENDOR "flameshot-org")
  46. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Powerful yet simple to use screenshot software.")
  47. set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
  48. set(CPACK_PACKAGE_HOMEPAGE_URL "https://flameshot.org")
  49. set(CPACK_PACKAGE_CONTACT "flameshot-org developers <info@flameshot.org>")
  50. set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/data/img/app/org.flameshot.Flameshot.svg") # TODO: Can any generator make use of this?
  51. set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README.md") # TODO: Where is this used? Do we need a better source?
  52. if(WIN32)
  53. # Include all dynamically linked runtime libaries such as MSVCRxxx.dll
  54. include(InstallRequiredSystemLibraries)
  55. if(RUN_IN_PLACE)
  56. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  57. set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-win64")
  58. else()
  59. set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-win32")
  60. endif()
  61. set(CPACK_GENERATOR ZIP)
  62. else()
  63. set(CPACK_GENERATOR WIX ZIP)
  64. set(CPACK_PACKAGE_NAME "${PROJECT_NAME_CAPITALIZED}")
  65. set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME_CAPITALIZED}")
  66. set(CPACK_PACKAGE_EXECUTABLES ${PROJECT_NAME} "${PROJECT_NAME_CAPITALIZED}")
  67. set(CPACK_CREATE_DESKTOP_LINKS ${PROJECT_NAME})
  68. # WIX (Windows .msi installer)
  69. # 48x48 pixels
  70. set(CPACK_WIX_PRODUCT_ICON "${CMAKE_SOURCE_DIR}/data/img/app/flameshot.ico")
  71. # Supported languages can be found at
  72. # http://wixtoolset.org/documentation/manual/v3/wixui/wixui_localization.html
  73. #set(CPACK_WIX_CULTURES "ar-SA,bg-BG,ca-ES,hr-HR,cs-CZ,da-DK,nl-NL,en-US,et-EE,fi-FI,fr-FR,de-DE")
  74. set(CPACK_WIX_UI_BANNER "${CMAKE_SOURCE_DIR}/packaging/win-installer/Bitmaps/CPACK_WIX_UI_BANNER.BMP")
  75. set(CPACK_WIX_UI_DIALOG "${CMAKE_SOURCE_DIR}/packaging/win-installer/Bitmaps/CPACK_WIX_UI_DIALOG.BMP")
  76. set(CPACK_WIX_PROPERTY_ARPHELPLINK "${CPACK_PACKAGE_HOMEPAGE_URL}")
  77. set(CPACK_WIX_PROPERTY_ARPURLINFOABOUT "${CPACK_PACKAGE_HOMEPAGE_URL}")
  78. set(CPACK_WIX_ROOT_FEATURE_DESCRIPTION "${CPACK_PACKAGE_DESCRIPTION_SUMMARY}")
  79. set(CPACK_WIX_LIGHT_EXTRA_FLAGS "-dcl:high") # set high compression
  80. set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/packaging/win-installer/LICENSE/GPL-3.0.txt")
  81. set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md")
  82. # The correct way would be to include both x32 and x64 into one installer
  83. # and install the appropriate one.
  84. # CMake does not support that, so there are two separate GUID's
  85. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  86. set(CPACK_WIX_UPGRADE_GUID "26D8062A-66D9-48D9-8924-42090FB9B3F9")
  87. else()
  88. set(CPACK_WIX_UPGRADE_GUID "2C53E1B9-51D9-4429-AAE4-B02221959AA5")
  89. endif()
  90. endif()
  91. elseif(APPLE)
  92. set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
  93. set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-osx")
  94. set(CPACK_GENERATOR ZIP)
  95. else()
  96. set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-linux")
  97. set(CPACK_GENERATOR TGZ)
  98. set(CPACK_SOURCE_GENERATOR TGZ)
  99. endif()
  100. include(CPack)