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. set(PLUGIN_SOURCES
  13. src/plugin-main.c)
  14. set(PLUGIN_HEADERS
  15. src/plugin-macros.h)
  16. # --- Platform-independent build settings ---
  17. add_library(obs-plugintemplate MODULE
  18. ${PLUGIN_SOURCES}
  19. ${PLUGIN_HEADERS})
  20. include_directories(
  21. "${LIBOBS_INCLUDE_DIR}/../UI/obs-frontend-api"
  22. ${Qt5Core_INCLUDES}
  23. ${Qt5Widgets_INCLUDES})
  24. target_link_libraries(obs-plugintemplate
  25. libobs
  26. Qt5::Core
  27. Qt5::Widgets)
  28. # --- End of section ---
  29. # --- Windows-specific build settings and tasks ---
  30. if(WIN32)
  31. if(NOT DEFINED OBS_FRONTEND_LIB)
  32. set(OBS_FRONTEND_LIB "OBS_FRONTEND_LIB-NOTFOUND" CACHE FILEPATH "OBS frontend library")
  33. message(FATAL_ERROR "Could not find OBS Frontend API\'s library !")
  34. endif()
  35. if(CMAKE_SIZEOF_VOID_P EQUAL 8)
  36. set(ARCH_NAME "64bit")
  37. set(OBS_BUILDDIR_ARCH "build64")
  38. else()
  39. set(ARCH_NAME "32bit")
  40. set(OBS_BUILDDIR_ARCH "build32")
  41. endif()
  42. include_directories(
  43. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/UI"
  44. )
  45. target_link_libraries(obs-plugintemplate
  46. "${OBS_FRONTEND_LIB}")
  47. # --- Release package helper ---
  48. # The "release" folder has a structure similar OBS' one on Windows
  49. set(RELEASE_DIR "${PROJECT_SOURCE_DIR}/release")
  50. add_custom_command(TARGET obs-plugintemplate POST_BUILD
  51. COMMAND if $<CONFIG:Release>==1 (
  52. "${CMAKE_COMMAND}" -E make_directory
  53. "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}"
  54. "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}")
  55. COMMAND if $<CONFIG:Release>==1 ("${CMAKE_COMMAND}" -E copy_directory
  56. "${PROJECT_SOURCE_DIR}/data"
  57. "${RELEASE_DIR}/data/obs-plugins/${CMAKE_PROJECT_NAME}")
  58. COMMAND if $<CONFIG:Release>==1 ("${CMAKE_COMMAND}" -E copy
  59. "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
  60. "${RELEASE_DIR}/obs-plugins/${ARCH_NAME}")
  61. # Copy to obs-studio dev environment for immediate testing
  62. COMMAND if $<CONFIG:Debug>==1 (
  63. "${CMAKE_COMMAND}" -E copy
  64. "$<TARGET_FILE:${CMAKE_PROJECT_NAME}>"
  65. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/obs-plugins/${ARCH_NAME}")
  66. COMMAND if $<CONFIG:Debug>==1 (
  67. "${CMAKE_COMMAND}" -E make_directory
  68. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}")
  69. COMMAND if $<CONFIG:Debug>==1 (
  70. "${CMAKE_COMMAND}" -E copy_directory
  71. "${PROJECT_SOURCE_DIR}/data"
  72. "${LIBOBS_INCLUDE_DIR}/../${OBS_BUILDDIR_ARCH}/rundir/$<CONFIG>/data/obs-plugins/${CMAKE_PROJECT_NAME}")
  73. )
  74. # --- End of sub-section ---
  75. endif()
  76. # --- End of section ---
  77. # --- Linux-specific build settings and tasks ---
  78. if(UNIX AND NOT APPLE)
  79. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  80. target_compile_options(mbedcrypto PRIVATE -fPIC)
  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 --