CMakeLists.txt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. cmake_minimum_required(VERSION 3.13)
  2. project(Almond VERSION 1.2.0 DESCRIPTION "Fractal Viewer")
  3. set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules)
  4. set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  5. set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  6. find_package(Doxygen)
  7. find_package(Qt5 COMPONENTS Core Widgets OpenGL Xml Concurrent LinguistTools REQUIRED)
  8. find_package(OpenMP)
  9. set(Boost_USE_STATIC_LIBS ON)
  10. find_package(Boost 1.65 REQUIRED)
  11. find_package(FFmpeg COMPONENTS AVCODEC AVDEVICE AVFORMAT AVUTIL SWSCALE REQUIRED)
  12. set(CMAKE_CXX_STANDARD 17)
  13. FILE(GLOB AlmondSources src/*.cpp)
  14. FILE(GLOB AlmondHeaders include/*.h)
  15. FILE(GLOB AlmondUIs ui/*.ui)
  16. FILE(GLOB AlmondTranslations translations/*.ts)
  17. set_source_files_properties(${AlmondTranslations} PROPERTIES OUTPUT_LOCATION ${CMAKE_BINARY_DIR}/translations)
  18. QT5_CREATE_TRANSLATION( QT_TRANSLATIONS_FILES ${MOC_HEADER_FILES} ${QT_SOURCE_FILES} translations/almond.fr.ts)
  19. qt5_add_translation(AlmondQMs ${AlmondTranslations})
  20. IF (WIN32)
  21. add_executable (
  22. Almond WIN32 ${AlmondSources}
  23. resources/Almond.qrc
  24. resources/splash.qrc
  25. resources/icon.rc
  26. ${AlmondQMs}
  27. ${AlmondUIs}
  28. ${AlmondHeaders}
  29. )
  30. ELSE()
  31. add_executable (
  32. Almond ${AlmondSources}
  33. resources/Almond.qrc
  34. resources/splash.qrc
  35. ${AlmondQMs}
  36. ${AlmondUIs}
  37. ${AlmondHeaders}
  38. )
  39. set_target_properties(Almond PROPERTIES OUTPUT_NAME "almond")
  40. ENDIF()
  41. target_include_directories(Almond PUBLIC include)
  42. add_subdirectory(libalmond)
  43. target_include_directories(Almond SYSTEM PUBLIC ${FFMPEG_INCLUDE_DIRS})
  44. target_link_libraries(Almond PUBLIC libalmond)
  45. target_link_libraries(Almond PUBLIC Qt5::Core Qt5::Widgets Qt5::OpenGL Qt5::Xml Qt5::Concurrent)
  46. target_link_libraries(Almond PUBLIC ${FFMPEG_LIBRARIES})
  47. set_property(TARGET Almond PROPERTY AUTOUIC_SEARCH_PATHS "ui")
  48. set_property(TARGET Almond PROPERTY AUTOMOC ON)
  49. set_property(TARGET Almond PROPERTY AUTORCC ON)
  50. set_property(TARGET Almond PROPERTY AUTOUIC ON)
  51. if(Boost_FOUND)
  52. target_compile_definitions(Almond PUBLIC WITH_BOOST)
  53. target_include_directories(Almond SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})
  54. endif(Boost_FOUND)
  55. if(OpenMP_CXX_FOUND)
  56. target_link_libraries(Almond PUBLIC OpenMP::OpenMP_CXX)
  57. target_compile_options(Almond PUBLIC ${OpenMP_CXX_FLAGS})
  58. endif()
  59. if (DOXYGEN_FOUND)
  60. set(DOXYGEN_IN doxyfile)
  61. add_custom_target(doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_SOURCE_DIR}/doxyfile
  62. WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
  63. COMMENT "Building documentation")
  64. endif()
  65. set(CPACK_PACKAGE_NAME "Almond")
  66. set(CPACK_PACKAGE_VERSION "1.2.0")
  67. IF (WIN32)
  68. # include(${CMAKE_MODULE_PATH}/Windeployqt.cmake)
  69. # install(TARGETS Almond)
  70. #install(TARGETS ${FFMPEG_DLLS})
  71. # windeployqt(Almond ${CMAKE_CURRENT_BINARY_DIR})
  72. # potentially need to set -DQTIFWDIR="path/to/qt/Tools/QtInstallerFramework/3.x/"
  73. set(CPACK_GENERATOR "IFW")
  74. set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Almond Installation Package")
  75. set(CPACK_IFW_PACKAGE_ICON "resources/almond.ico")
  76. set(CPACK_IFW_PACKAGE_WINDOW_ICON "resources/Almond.png")
  77. set(CPACK_IFW_VERBOSE ON)
  78. include(CPack)
  79. include(CPackIFW)
  80. cpack_add_component(Almond
  81. DISPLAY_NAME "Almond"
  82. DESCRIPTION "Almond Application")
  83. cpack_ifw_configure_component(Almond
  84. VERSION "1.2.0"
  85. SCRIPT "installer/packages/almond/meta/installscript.qs"
  86. USER_INTERFACES "installer/packages/almond/meta/page.ui"
  87. LICENSES "zlib" "installer/packages/almond/meta/zlib.txt")
  88. ELSEIF (UNIX AND NOT APPLE)
  89. install(TARGETS Almond RUNTIME DESTINATION "bin")
  90. install(FILES debian/Almond.desktop DESTINATION "share/applications")
  91. install(FILES resources/Almond.png DESTINATION "share/pixmaps")
  92. install(FILES debian/copyright DESTINATION "share/doc/almond/" RENAME "copyright")
  93. install(FILES debian/Almond.appdata.xml DESTINATION "share/metainfo/" RENAME "org.winfor.Almond.appdata.xml")
  94. set(CPACK_GENERATOR "DEB")
  95. set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_SOURCE_DIR}/LICENSE)
  96. set(CPACK_STRIP_FILES TRUE)
  97. set(CPACK_SOURCE_GENERATOR "DEB")
  98. set(CPACK_COMPONENTS_ALL Almond)
  99. set(CPACK_DEBIAN_PACKAGE_DESCRIPTION "A fractal viewer")
  100. set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE amd64)
  101. set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Nicolas Winkler <nicolas.winkler@gmx.ch>")
  102. set(CPACK_DEBIAN_PACKAGE_DEPENDS "qtbase5-dev,libavformat58,libavdevice58,libavfilter7,libavutil56,libswscale5,ocl-icd-libopencl1,libpng16-16,libc6")
  103. set(CPACK_SET_DESTDIR True)
  104. set(CPACK_INSTALL_PREFIX "/usr")
  105. include(CPack)
  106. ENDIF()