11cmake_minimum_required (VERSION 3.5)
22project (hyperion-obs)
3- include (GNUInstallDirs)
3+
4+ # Macro to get path of first sub dir of a dir, used for MAC OSX lib/header searching
5+ MACRO (FIRSTSUBDIR result curdir)
6+ FILE (GLOB children RELATIVE ${curdir} ${curdir} /*)
7+ SET (dirlist "" )
8+ FOREACH (child ${children} )
9+ IF (IS_DIRECTORY ${curdir} /${child} )
10+ LIST (APPEND dirlist "${curdir} /${child} " )
11+ BREAK ()
12+ ENDIF ()
13+ ENDFOREACH ()
14+ SET (${result} ${dirlist} )
15+ ENDMACRO ()
416
517set (CMAKE_CXX_STANDARD 11)
6- set (CMAKE_PREFIX_PATH "${QTDIR} " )
718set (CMAKE_AUTOMOC ON )
819set (CMAKE_AUTOUIC ON )
920
10- set (LIBOBS_INCLUDE_DIR "external/obs-studio/libobs" )
11- include (cmake/FindLibObs.cmake)
21+ if (UNIX )
22+ include (GNUInstallDirs)
23+ endif ()
24+
25+ # Add project specific cmake modules (find, etc)
26+ set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR} /cmake)
27+
28+ # enable C++11; MSVC doesn't have c++11 feature switch
29+ if (NOT CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
30+ include (CheckCXXCompilerFlag)
31+ CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
32+ CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
33+
34+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall" )
35+ if (CMAKE_COMPILER_IS_GNUCXX)
36+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-psabi" )
37+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-psabi" )
38+ endif ()
39+ if (COMPILER_SUPPORTS_CXX11)
40+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
41+ elseif (COMPILER_SUPPORTS_CXX0X)
42+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x" )
43+ else ()
44+ message (STATUS "No support for C++11 detected. Compilation will most likely fail on your compiler" )
45+ endif ()
46+ endif ()
47+
48+ # MSVC options
49+ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
50+ if (NOT DEFINED ENV{Qt5_BASE_DIR})
51+ FIRSTSUBDIR(SUBDIRQT "C:/Qt" )
52+ SET (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "${SUBDIRQT} /msvc2019_64" )
53+ else ()
54+ message (STATUS "Qt5_BASE_DIR: $ENV{Qt5_BASE_DIR} " )
55+ message (STATUS "Add Qt5_BASE_DIR: $ENV{Qt5_BASE_DIR} to CMAKE_PREFIX_PATH" )
56+ SET (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "$ENV{Qt5_BASE_DIR} " )
57+ endif ()
58+
59+ if (NOT DEFINED ENV{Qt5_DIR})
60+ if (NOT DEFINED ENV{Qt5_BASE_DIR})
61+ SET (qt_module_path "${SUBDIRQT} /msvc2019_64/lib/cmake/Qt5" )
62+ else ()
63+ SET (qt_module_path "$ENV{Qt5_BASE_DIR} /lib/cmake/Qt5" )
64+ endif ()
65+ else ()
66+ SET (qt_module_path "$ENV{Qt5_DIR} " )
67+ endif ()
68+
69+ message (STATUS "Add ${qt_module_path} to CMAKE_MODULE_PATH" )
70+ SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${qt_module_path} " )
71+ endif ()
1272
13- find_package (LibObs REQUIRED)
73+ set (OBS_SOURCE "" CACHE STRING "Where is the source code of OBS-Studio located" )
74+ set (OBS_BUILD "" CACHE STRING "Where is the build directory of OBS-Studio located" )
75+
76+ set (LIBOBS_INCLUDE_DIR "${OBS_SOURCE} /libobs" )
77+ set (OBS_FRONTEND_INCLUDE_DIR "${OBS_SOURCE} /UI/obs-frontend-api" )
78+
79+ if (WIN32 )
80+ set (LibObs_DIR "${OBS_BUILD} /libobs" )
81+ set (LIBOBS_LIB "${OBS_BUILD} /libobs/$<CONFIGURATION>/obs.lib" )
82+ set (OBS_FRONTEND_LIB "${OBS_BUILD} /UI/obs-frontend-api/$<CONFIGURATION>/obs-frontend-api.lib" )
83+ set (PTHREAD_LIB "${OBS_BUILD} /deps/w32-pthreads/$<CONFIGURATION>/w32-pthreads.lib" )
84+ endif ()
85+
86+ find_package (Libobs REQUIRED)
1487find_package (Qt5 COMPONENTS Core Widgets Network REQUIRED)
1588
1689set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared flatbuffers library" )
@@ -20,6 +93,7 @@ add_subdirectory(external/flatbuffers)
2093export (TARGETS flatc FILE "${CMAKE_BINARY_DIR} /flatc_export.cmake" )
2194set (FLATBUFFERS_INCLUDE_DIRS "${CMAKE_SOURCE_DIR} /external/flatbuffers/include" )
2295set (FLATBUFFERS_FLATC_EXECUTABLE "$<TARGET_FILE:flatc>" )
96+
2397include_directories (
2498 ${CMAKE_CURRENT_BINARY_DIR}
2599 ${FLATBUFFERS_INCLUDE_DIRS}
@@ -51,17 +125,28 @@ endforeach()
51125
52126set_source_files_properties (${Flatbuffer_GENERATED_FBS} PROPERTIES GENERATED TRUE )
53127
54- include_directories ("external/obs-studio/UI/obs-frontend-api" )
55-
56128FILE ( GLOB hyperion_obs_SOURCES "${CMAKE_SOURCE_DIR} /src/*.h" "${CMAKE_SOURCE_DIR} /src/*.cpp" )
57129
58130add_library (${PROJECT_NAME} MODULE
59131 ${hyperion_obs_SOURCES}
60132 ${Flatbuffer_GENERATED_FBS}
61133)
62-
134+
135+ include_directories (
136+ ${OBS_FRONTEND_INCLUDE_DIR}
137+ ${LIBOBS_INCLUDE_DIR}
138+ )
139+
140+ if (UNIX )
141+ target_link_libraries (${PROJECT_NAME} libobs)
142+ endif ()
143+
144+ if (WIN32 )
145+ target_link_libraries (${PROJECT_NAME} ${PTHREAD_LIB} ${LIBOBS_LIB} )
146+ endif ()
147+
63148target_link_libraries (${PROJECT_NAME}
64- libobs
149+ ${OBS_FRONTEND_LIB}
65150 flatbuffers
66151 Qt5::Core
67152 Qt5::Widgets
@@ -76,5 +161,7 @@ endif()
76161
77162set_target_properties (${PROJECT_NAME} PROPERTIES PREFIX "" )
78163
79- install (TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} /obs-plugins)
80- install (DIRECTORY locale/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /obs/obs-plugins/hyperion-obs/locale)
164+ if (UNIX )
165+ install (TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} /obs-plugins)
166+ install (DIRECTORY locale/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR} /obs/obs-plugins/hyperion-obs/locale)
167+ endif ()
0 commit comments