CMakeLists.txt 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. cmake_minimum_required(VERSION 3.2)
  2. project(obs-plugintemplate)
  3. set(CMAKE_PREFIX_PATH "${QTDIR}")
  4. set(CMAKE_INCLUDE_CURRENT_DIR ON)
  5. set(CMAKE_AUTOMOC ON)
  6. set(CMAKE_AUTOUIC ON)
  7. if (WIN32 OR APPLE)
  8. include(external/FindLibObs.cmake)
  9. endif()
  10. find_package(LibObs REQUIRED)
  11. find_package(Qt5Core REQUIRED)
  12. find_package(Qt5Widgets REQUIRED)
  13. set(PLUGIN_SOURCES
  14. src/plugin-main.c)
  15. set(PLUGIN_HEADERS
  16. src/plugin-macros.h)
  17. # --- Platform-independent build settings ---
  18. add_library(obs-plugintemplate MODULE
  19. ${PLUGIN_SOURCES}
  20. ${PLUGIN_HEADERS})
  21. include_directories(
  22. "${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
  23. ${Qt5Core_INCLUDES}
  24. ${Qt5Widgets_INCLUDES})
  25. target_link_libraries(obs-plugintemplate
  26. libobs
  27. Qt5::Core
  28. Qt5::Widgets)
  29. # --- End of section ---
  30. # --- Windows-specific build settings and tasks ---
  31. if(WIN32)
  32. if(NOT DEFINED OBS_FRONTEND_LIB)
  33. set(OBS_FRONTEND_LIB "OBS_FRONTEND_LIB-NOTFOUND" CACHE FILEPATH "OBS frontend library")
  34. message(FATAL_ERROR "Could not find OBS Frontend API\'s library !")
  35. endif()
  36. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  37. set(ARCH_NAME "64bit")
  38. set(OBS_BUILDDIR_ARCH "build64")
  39. else()
  40. set(ARCH_NAME "32bit")
  41. set(OBS_BUILDDIR_ARCH "build32")
  42. endif()
  43. include_directories(
  44. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/UI"
  45. )
  46. target_link_libraries(obs-plugintemplate
  47. "${OBS_FRONTEND_LIB}")
  48. # --- Release package helper ---
  49. # The "release" folder has a structure similar OBS' one on Windows
  50. set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
  51. add_custom_command(TARGET obs-plugintemplate POST_BUILD
  52. COMMAND if $<CONFIG:Release>==1 (
  53. "${CMAKE_COMMAND}" -E make_directory
  54. "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}"
  55. "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}")
  56. COMMAND if $<CONFIG:Release>==1 ("${CMAKE_COMMAND}" -E copy_directory
  57. "${PROJECT_SOURCE_DIR}/data"
  58. "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}")
  59. COMMAND if $<CONFIG:Release>==1 ("${CMAKE_COMMAND}" -E copy
  60. "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
  61. "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}")
  62. # Copy to obs-studio dev environment for immediate testing
  63. COMMAND if $<CONFIG:Debug>==1 (
  64. "${CMAKE_COMMAND}" -E copy
  65. "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
  66. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}")
  67. COMMAND if $<CONFIG:Debug>==1 (
  68. "${CMAKE_COMMAND}" -E make_directory
  69. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}")
  70. COMMAND if $<CONFIG:Debug>==1 (
  71. "${CMAKE_COMMAND}" -E copy_directory
  72. "${PROJECT_SOURCE_DIR}/data"
  73. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}")
  74. )
  75. # --- End of sub-section ---
  76. endif()
  77. # --- End of section ---
  78. # --- Linux-specific build settings and tasks ---
  79. if(UNIX AND NOT APPLE)
  80. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  81. set_target_properties(obs-plugintemplate PROPERTIES PREFIX "")
  82. target_link_libraries(obs-plugintemplate
  83. obs-frontend-api)
  84. file(GLOB locale_files data/locale/*.ini)
  85. install(TARGETS obs-plugintemplate
  86. LIBRARY DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/obs-plugins")
  87. install(FILES ${locale_files}
  88. DESTINATION "${CMAKE_INSTALL_PREFIX}/share/obs/obs-plugins/${CMAKE_PROJECT_NAME}/locale")
  89. endif()
  90. # --- End of section ---
  91. # -- OS X specific build settings and tasks --
  92. if(APPLE)
  93. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -fvisibility=default")
  94. set_target_properties(obs-plugintemplate PROPERTIES PREFIX "")
  95. target_link_libraries(obs-plugintemplate "${OBS_FRONTEND_LIB}")
  96. endif()
  97. # -- End of section --