CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. cmake_minimum_required(VERSION 3.13)
  2. project(Almond VERSION 1.1.0 DESCRIPTION "Fractal Viewer")
  3. set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules)
  4. find_package(Qt5 COMPONENTS Core Widgets OpenGL Xml Concurrent LinguistTools REQUIRED)
  5. find_package(OpenMP)
  6. set(Boost_USE_STATIC_LIBS ON)
  7. find_package(Boost 1.65 REQUIRED)
  8. find_package(FFmpeg COMPONENTS AVCODEC AVDEVICE AVFORMAT AVUTIL SWSCALE REQUIRED)
  9. #message(${FFMPEG_INCLUDE_DIRS})
  10. set(CMAKE_CXX_STANDARD 17)
  11. FILE(GLOB AlmondSources src/*.cpp)
  12. FILE(GLOB AlmondHeaders include/*.h)
  13. FILE(GLOB AlmondUIs ui/*.ui)
  14. FILE(GLOB AlmondTranslations translations/almond_de-DE.ts)
  15. qt5_add_translation(AlmondQMs AlmondTranslations)
  16. IF (WIN32)
  17. add_executable(Almond WIN32 ${AlmondSources}
  18. resources/Almond.qrc
  19. resources/splash.qrc
  20. resources/icon.rc
  21. ${AlmondQMs}
  22. ${AlmondUIs}
  23. ${AlmondHeaders})
  24. ELSE()
  25. add_executable(Almond ${AlmondSources}
  26. resources/Almond.qrc
  27. resources/splash.qrc
  28. ${AlmondQMs}
  29. ${AlmondUIs}
  30. ${AlmondHeaders})
  31. set_target_properties(Almond PROPERTIES OUTPUT_NAME "almond")
  32. ENDIF()
  33. target_include_directories(Almond PUBLIC include)
  34. add_subdirectory(libalmond)
  35. target_include_directories(Almond SYSTEM PUBLIC ${FFMPEG_INCLUDE_DIRS})
  36. target_link_libraries(Almond PUBLIC libalmond)
  37. target_link_libraries(Almond PUBLIC Qt5::Core Qt5::Widgets Qt5::OpenGL Qt5::Xml Qt5::Concurrent)
  38. target_link_libraries(Almond PUBLIC ${FFMPEG_LIBRARIES})
  39. set_property(TARGET Almond PROPERTY AUTOUIC_SEARCH_PATHS "ui")
  40. set_property(TARGET Almond PROPERTY AUTOMOC ON)
  41. set_property(TARGET Almond PROPERTY AUTORCC ON)
  42. set_property(TARGET Almond PROPERTY AUTOUIC ON)
  43. if(Boost_FOUND)
  44. target_compile_definitions(Almond PUBLIC WITH_BOOST)
  45. target_include_directories(Almond SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
  46. #target_link_libraries(Almond PRIVATE ${Boost_LIBRARIES})
  47. endif(Boost_FOUND)
  48. if(OpenMP_CXX_FOUND)
  49. target_link_libraries(Almond PUBLIC OpenMP::OpenMP_CXX)
  50. target_compile_options(Almond PUBLIC ${OpenMP_CXX_FLAGS})
  51. endif()
  52. set(CPACK_PACKAGE_NAME "Almond")
  53. set(CPACK_PACKAGE_VERSION "1.1.0")
  54. IF (WIN32)
  55. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MyPackage Installation Example")
  56. include(CPack)
  57. include(CPackIFW)
  58. cpack_add_component(Almond
  59. DISPLAY_NAME "Almond"
  60. DESCRIPTION "Almond Application")
  61. cpack_ifw_configure_component(Almond)
  62. ELSEIF (UNIX AND NOT APPLE)
  63. install(TARGETS Almond RUNTIME DESTINATION "bin")
  64. install(FILES debian/Almond.desktop DESTINATION "share/applications")
  65. install(FILES resources/Almond.png DESTINATION "share/pixmaps")
  66. install(FILES debian/copyright DESTINATION "share/doc/almond/" RENAME "copyright")
  67. install(FILES debian/Almond.appdata.xml DESTINATION "share/metainfo/" RENAME "org.winfor.Almond.appdata.xml")
  68. set(CPACK_GENERATOR "DEB")
  69. set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
  70. set(CPACK_STRIP_FILES TRUE)
  71. set(CPACK_SOURCE_GENERATOR "DEB")
  72. set(CPACK_COMPONENTS_ALL Almond)
  73. set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "A fractal viewer")
  74. set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64)
  75. set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Nicolas Winkler <nicolas.winkler@gmx.ch>")
  76. set(CPACK_DEBIAN_PACKAGE_DEPENDS "qtbase5-dev,libavformat58,libavdevice58,libavfilter7,libavutil56,libswscale5,ocl-icd-libopencl1,libpng16-16,libc6")
  77. set(CPACK_SET_DESTDIR True)
  78. set(CPACK_INSTALL_PREFIX "/usr")
  79. include(CPack)
  80. ENDIF()