11cmake_minimum_required (VERSION 3.31.0)
2- project (livekit-examples)
2+ project (livekit-examples)
33
44set (CMAKE_CXX_STANDARD 17)
55set (CMAKE_CXX_STANDARD_REQUIRED ON )
66
7- #################### SimpleRoom example ##########################
7+ include (FetchContent)
88
9- list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake" )
10- include (sdl3)
9+ set (SDL_TEST OFF CACHE BOOL "" FORCE)
10+ set (SDL_TESTS OFF CACHE BOOL "" FORCE)
11+ set (SDL_INSTALL OFF CACHE BOOL "" FORCE)
12+ set (SDL_EXAMPLES OFF CACHE BOOL "" FORCE)
1113
12- add_executable (SimpleRoom
13- simple_room/main.cpp
14- simple_room/fallback_capture.cpp
15- simple_room/fallback_capture.h
16- simple_room/sdl_media.cpp
17- simple_room/sdl_media.h
18- simple_room/sdl_media_manager.cpp
19- simple_room/sdl_media_manager.h
20- simple_room/sdl_video_renderer.cpp
21- simple_room/sdl_video_renderer.h
22- simple_room/wav_audio_source.cpp
23- simple_room/wav_audio_source.h
14+ FetchContent_Declare(
15+ SDL3
16+ GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
17+ GIT_TAG release-3.2.0
2418)
19+ FetchContent_MakeAvailable(SDL3)
2520
26- target_link_libraries (SimpleRoom
27- PRIVATE
28- livekit
29- SDL3::SDL3
21+ function (livekit_windows_link_deps target )
22+ if (WIN32 )
23+ target_link_libraries (${target} PRIVATE
24+ ntdll
25+ userenv
26+ winmm
27+ iphlpapi
28+ ole32
29+ uuid
30+ msdmo
31+ dmoguids
32+ strmiids
33+ wmcodecdspuuid
34+ ws2_32
35+ bcrypt
36+ )
37+ endif ()
38+ endfunction ()
39+
40+ add_executable (SimpleRoom
41+ simple_room/main.cpp
42+ simple_room/fallback_capture.cpp
43+ simple_room/fallback_capture.h
44+ simple_room/sdl_media.cpp
45+ simple_room/sdl_media.h
46+ simple_room/sdl_media_manager.cpp
47+ simple_room/sdl_media_manager.h
48+ simple_room/sdl_video_renderer.cpp
49+ simple_room/sdl_video_renderer.h
50+ simple_room/wav_audio_source.cpp
51+ simple_room/wav_audio_source.h
3052)
3153
54+ target_link_libraries (SimpleRoom PRIVATE livekit SDL3::SDL3)
55+ livekit_windows_link_deps(SimpleRoom)
56+
3257add_custom_command (TARGET SimpleRoom POST_BUILD
33- COMMAND ${CMAKE_COMMAND} -E copy_directory
34- ${CMAKE_SOURCE_DIR} /data
35- ${CMAKE_CURRENT_BINARY_DIR} /data
58+ COMMAND ${CMAKE_COMMAND} -E copy_directory
59+ ${CMAKE_SOURCE_DIR} /data
60+ ${CMAKE_CURRENT_BINARY_DIR} /data
3661)
3762
38- #################### SimpleRpc example ##########################
39-
40- include (FetchContent)
4163FetchContent_Declare(
4264 nlohmann_json
4365 URL https://github.com/nlohmann/json/releases/download/v3.11.3/json.tar.xz
4466)
4567FetchContent_MakeAvailable(nlohmann_json)
4668
47- add_executable (SimpleRpc
48- simple_rpc/main.cpp
49- )
50-
51- target_link_libraries (SimpleRpc
52- PRIVATE
53- nlohmann_json::nlohmann_json
54- livekit
55- )
69+ add_executable (SimpleRpc simple_rpc/main.cpp)
70+ target_link_libraries (SimpleRpc PRIVATE nlohmann_json::nlohmann_json livekit)
71+ livekit_windows_link_deps(SimpleRpc)
5672
57- #################### SimpleDataStream example ##########################
58-
59- add_executable (SimpleDataStream
60- simple_data_stream/main.cpp
61- )
73+ add_executable (SimpleDataStream simple_data_stream/main.cpp)
74+ target_link_libraries (SimpleDataStream PRIVATE livekit)
75+ livekit_windows_link_deps(SimpleDataStream)
6276
63- target_link_libraries (SimpleDataStream
64- PRIVATE
65- livekit
66- )
67-
68- add_custom_command (
69- TARGET SimpleDataStream
70- POST_BUILD
77+ add_custom_command (TARGET SimpleDataStream POST_BUILD
7178 COMMAND ${CMAKE_COMMAND} -E copy_directory
7279 ${CMAKE_SOURCE_DIR} /data
7380 $<TARGET_FILE_DIR:SimpleDataStream>/data
74- )
81+ )
82+
83+ if (WIN32 AND TARGET SDL3::SDL3)
84+ foreach (tgt SimpleRoom SimpleRpc SimpleDataStream)
85+ add_custom_command (TARGET ${tgt} POST_BUILD
86+ COMMAND ${CMAKE_COMMAND} -E copy_if_different
87+ $<TARGET_FILE:SDL3::SDL3>
88+ $<TARGET_FILE_DIR:${tgt} >
89+ )
90+ endforeach ()
91+ endif ()
0 commit comments