Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
9d3ead61
Commit
9d3ead61
authored
Jul 25, 2022
by
Xiaofeng Wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整理 CMakeLists.txt
parent
8192b37c
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
620 行增加
和
143 行删除
+620
-143
3rdpart/CMakeLists.txt
+185
-0
CMakeLists.txt
+0
-0
api/CMakeLists.txt
+67
-28
api/tests/CMakeLists.txt
+39
-20
player/CMakeLists.txt
+57
-34
server/CMakeLists.txt
+42
-21
src/CMakeLists.txt
+65
-0
srt/CMakeLists.txt
+44
-0
tests/CMakeLists.txt
+51
-40
webrtc/CMakeLists.txt
+70
-0
没有找到文件。
3rdpart/CMakeLists.txt
0 → 100644
查看文件 @
9d3ead61
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
##############################################################################
# jsoncpp
aux_source_directory
(
${
CMAKE_CURRENT_SOURCE_DIR
}
/jsoncpp JSONCPP_SRC_LIST
)
add_library
(
jsoncpp STATIC
${
JSONCPP_SRC_LIST
}
)
target_compile_options
(
jsoncpp
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_include_directories
(
jsoncpp
PRIVATE
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
PUBLIC
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
)
update_cached_list
(
MK_LINK_LIBRARIES jsoncpp
)
##############################################################################
# media-server
set
(
MediaServer_ROOT
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/media-server"
)
# TODO: 补一个函数处理各种库
# 添加 mov、flv 库用于 MP4 录制
if
(
ENABLE_MP4
)
message
(
STATUS
"ENABLE_MP4 defined"
)
# MOV
set
(
MediaServer_MOV_ROOT
${
MediaServer_ROOT
}
/libmov
)
aux_source_directory
(
${
MediaServer_MOV_ROOT
}
/include MOV_SRC_LIST
)
aux_source_directory
(
${
MediaServer_MOV_ROOT
}
/source MOV_SRC_LIST
)
add_library
(
mov STATIC
${
MOV_SRC_LIST
}
)
add_library
(
MediaServer::mov ALIAS mov
)
target_compile_definitions
(
mov
PUBLIC -DENABLE_MP4
)
target_compile_options
(
mov
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_include_directories
(
mov
PRIVATE
"$<BUILD_INTERFACE:
${
MediaServer_MOV_ROOT
}
/include>"
PUBLIC
"$<BUILD_INTERFACE:
${
MediaServer_MOV_ROOT
}
/include>"
)
# FLV
set
(
MediaServer_FLV_ROOT
${
MediaServer_ROOT
}
/libflv
)
aux_source_directory
(
${
MediaServer_FLV_ROOT
}
/include FLV_SRC_LIST
)
aux_source_directory
(
${
MediaServer_FLV_ROOT
}
/source FLV_SRC_LIST
)
add_library
(
flv STATIC
${
FLV_SRC_LIST
}
)
add_library
(
MediaServer::flv ALIAS flv
)
target_compile_options
(
flv
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_include_directories
(
flv
PRIVATE
"$<BUILD_INTERFACE:
${
MediaServer_FLV_ROOT
}
/include>"
PUBLIC
"$<BUILD_INTERFACE:
${
MediaServer_FLV_ROOT
}
/include>"
)
update_cached_list
(
MK_LINK_LIBRARIES
MediaServer::flv MediaServer::mov
)
update_cached_list
(
MK_COMPILE_DEFINITIONS
ENABLE_MP4
)
endif
()
# 添加 mpeg 用于支持 ts 生成
if
(
ENABLE_RTPPROXY OR ENABLE_HLS
)
# mpeg
set
(
MediaServer_MPEG_ROOT
${
MediaServer_ROOT
}
/libmpeg
)
aux_source_directory
(
${
MediaServer_MPEG_ROOT
}
/include MPEG_SRC_LIST
)
aux_source_directory
(
${
MediaServer_MPEG_ROOT
}
/source MPEG_SRC_LIST
)
add_library
(
mpeg STATIC
${
MPEG_SRC_LIST
}
)
add_library
(
MediaServer::mpeg ALIAS mpeg
)
target_compile_options
(
mpeg
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_include_directories
(
mpeg
PRIVATE
"$<BUILD_INTERFACE:
${
MediaServer_MPEG_ROOT
}
/include>"
PUBLIC
"$<BUILD_INTERFACE:
${
MediaServer_MPEG_ROOT
}
/include>"
)
update_cached_list
(
MK_LINK_LIBRARIES MediaServer::mpeg
)
if
(
ENABLE_RTPPROXY
)
update_cached_list
(
MK_COMPILE_DEFINITIONS ENABLE_RTPPROXY
)
endif
()
if
(
ENABLE_HLS
)
update_cached_list
(
MK_COMPILE_DEFINITIONS ENABLE_HLS
)
endif
()
endif
()
##############################################################################
# toolkit
# TODO: 改造 toolkit 以便直接引用
include
(
CheckStructHasMember
)
include
(
CheckSymbolExists
)
# 检查 sendmmsg 相关依赖并设置对应的宏
#list(APPEND CMAKE_REQUIRED_DEFINITIONS -D_GNU_SOURCE)
check_struct_has_member
(
"struct mmsghdr"
msg_hdr sys/socket.h HAVE_MMSG_HDR
)
check_symbol_exists
(
sendmmsg sys/socket.h HAVE_SENDMMSG_API
)
check_symbol_exists
(
recvmmsg sys/socket.h HAVE_RECVMMSG_API
)
set
(
COMPILE_DEFINITIONS
)
if
(
HAVE_MMSG_HDR
)
list
(
APPEND COMPILE_DEFINITIONS HAVE_MMSG_HDR
)
endif
()
if
(
HAVE_SENDMMSG_API
)
list
(
APPEND COMPILE_DEFINITIONS HAVE_SENDMMSG_API
)
endif
()
if
(
HAVE_RECVMMSG_API
)
list
(
APPEND COMPILE_DEFINITIONS HAVE_RECVMMSG_API
)
endif
()
set
(
ToolKit_ROOT
${
CMAKE_CURRENT_SOURCE_DIR
}
/ZLToolKit
)
# 收集源代码
file
(
GLOB ToolKit_SRC_LIST
${
ToolKit_ROOT
}
/src/*/*.cpp
${
ToolKit_ROOT
}
/src/*/*.h
${
ToolKit_ROOT
}
/src/*/*.c
)
if
(
IOS
)
list
(
APPEND ToolKit_SRC_LIST
${
ToolKit_ROOT
}
/Network/Socket_ios.mm
)
endif
()
# 去除 win32 的适配代码
if
(
NOT WIN32
)
list
(
REMOVE_ITEM ToolKit_SRC_LIST
${
ToolKit_ROOT
}
/win32/getopt.c
)
else
()
# 防止 Windows.h 包含 Winsock.h
list
(
APPEND COMPILE_DEFINITIONS
WIN32_LEAN_AND_MEAN MP4V2_NO_STDINT_DEFS
# 禁用警告
_CRT_SECURE_NO_WARNINGS _WINSOCK_DEPRECATED_NO_WARNINGS
)
endif
()
# 添加库
add_library
(
zltoolkit STATIC
${
ToolKit_SRC_LIST
}
)
add_library
(
ZLMediaKit::ToolKit ALIAS zltoolkit
)
target_compile_definitions
(
zltoolkit
PRIVATE
${
COMPILE_DEFINITIONS
}
)
target_compile_options
(
zltoolkit
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_include_directories
(
zltoolkit
PRIVATE
"$<BUILD_INTERFACE:
${
ToolKit_ROOT
}
/src>"
PUBLIC
"$<BUILD_INTERFACE:
${
ToolKit_ROOT
}
>/src"
)
update_cached_list
(
MK_LINK_LIBRARIES ZLMediaKit::ToolKit
)
if
(
USE_SOLUTION_FOLDERS
AND
(
NOT GROUP_BY_EXPLORER
))
# 在 IDE 中对文件进行分组, 源文件和头文件分开
set_file_group
(
${
ToolKit_ROOT
}
/src
${
ToolKit_SRC_LIST
}
)
endif
()
# 未在使用
if
(
ENABLE_CXX_API
)
# 保留目录结构
install
(
DIRECTORY
${
ToolKit_ROOT
}
/
DESTINATION
${
INSTALL_PATH_INCLUDE
}
/ZLToolKit
REGEX
"(.*[.](md|cpp)|win32)$"
EXCLUDE
)
install
(
TARGETS zltoolkit
DESTINATION
${
INSTALL_PATH_LIB
}
)
endif
()
CMakeLists.txt
查看文件 @
9d3ead61
差异被折叠。
点击展开。
api/CMakeLists.txt
查看文件 @
9d3ead61
include_directories
(
include source
)
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
include
(
GenerateExportHeader
)
file
(
GLOB api_src_list include/*.h source/*.cpp source/*.h source/*.c
)
file
(
GLOB API_SRC_LIST
include/*.h
source/*.c
source/*.cpp
source/*.h
)
set
(
LINK_LIBRARIES
${
MK_LINK_LIBRARIES
}
jsoncpp
)
if
(
IOS
)
add_library
(
mk_api STATIC
${
api_src_list
}
)
target_link_libraries
(
mk_api
${
LINK_LIB_LIST
}
jsoncpp
)
return
()
if
(
IOS
)
add_library
(
mk_api STATIC
${
API_SRC_LIST
}
)
target_link_libraries
(
mk_api
PRIVATE
${
LINK_LIBRARIES
}
)
return
()
endif
()
add_definitions
(
-DGENERATE_EXPORT
)
include_directories
(
${
CMAKE_BINARY_DIR
}
)
set
(
COMPILE_DEFINITIONS
${
MK_COMPILE_DEFINITIONS
}
)
list
(
APPEND COMPILE_DEFINITIONS GENERATE_EXPORT
)
if
(
ENABLE_API_STATIC_LIB
)
add_definitions
(
-DMediaKitApi_STATIC
)
add_library
(
mk_api STATIC
${
api_src_list
}
)
else
()
add_library
(
mk_api SHARED
${
api_src_list
}
)
endif
()
if
(
ENABLE_API_STATIC_LIB
)
add_library
(
mk_api STATIC
${
API_SRC_LIST
}
)
list
(
APPEND COMPILE_DEFINITIONS MediaKitApi_STATIC
)
else
()
add_library
(
mk_api SHARED
${
API_SRC_LIST
}
)
endif
()
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
mk_api -Wl,--start-group jsoncpp
${
LINK_LIB_LIST
}
-Wl,--end-group
)
else
()
target_link_libraries
(
mk_api jsoncpp
${
LINK_LIB_LIST
}
)
endif
()
target_compile_definitions
(
mk_api
PRIVATE
${
COMPILE_DEFINITIONS
}
)
target_include_directories
(
mk_api
PRIVATE
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_BINARY_DIR
}
>"
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
/include>"
PUBLIC
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
/include>"
)
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
mk_api -Wl,--start-group
${
LINK_LIBRARIES
}
-Wl,--end-group
)
else
()
target_link_libraries
(
mk_api jsoncpp
${
LINK_LIBRARIES
}
)
endif
()
generate_export_header
(
mk_api
EXPORT_MACRO_NAME API_EXPORT
BASE_NAME MK_API
STATIC_DEFINE MediaKitApi_STATIC
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/mk_export.h"
)
EXPORT_MACRO_NAME API_EXPORT
BASE_NAME MK_API
STATIC_DEFINE MediaKitApi_STATIC
EXPORT_FILE_NAME
"
${
CMAKE_BINARY_DIR
}
/mk_export.h"
)
add_subdirectory
(
tests
)
file
(
GLOB api_header_list include/*.h
${
CMAKE_BINARY_DIR
}
/*.h
)
install
(
FILES
${
api_header_list
}
DESTINATION
${
INSTALL_PATH_INCLUDE
}
)
install
(
TARGETS mk_api ARCHIVE DESTINATION
${
INSTALL_PATH_LIB
}
LIBRARY DESTINATION
${
INSTALL_PATH_LIB
}
)
\ No newline at end of file
file
(
GLOB API_HEADER_LIST include/*.h
${
CMAKE_CURRENT_BINARY_DIR
}
/*.h
)
install
(
FILES
${
API_HEADER_LIST
}
DESTINATION
${
INSTALL_PATH_INCLUDE
}
)
install
(
TARGETS mk_api
ARCHIVE DESTINATION
${
INSTALL_PATH_LIB
}
LIBRARY DESTINATION
${
INSTALL_PATH_LIB
}
)
api/tests/CMakeLists.txt
查看文件 @
9d3ead61
aux_source_directory
(
. TEST_SRC_LIST
)
include_directories
(
${
PROJECT_BINARY_DIR
}
/api
)
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
aux_source_directory
(
${
CMAKE_CURRENT_SOURCE_DIR
}
TEST_SRC_LIST
)
foreach
(
TEST_SRC
${
TEST_SRC_LIST
}
)
STRING
(
REGEX REPLACE
"^
\\
./|
\\
.c[a-zA-Z0-9_]*$"
""
TEST_EXE_NAME
${
TEST_SRC
}
)
if
(
NOT ENABLE_FFMPEG
)
# 过滤掉依赖 FFmpeg 的测试模块
if
(
"
${
TEST_EXE_NAME
}
"
MATCHES
"player_opencv"
)
continue
()
endif
()
endif
()
message
(
STATUS
"add c api tester:
${
TEST_EXE_NAME
}
"
)
set
(
exe_name api_tester_
${
TEST_EXE_NAME
}
)
add_executable
(
${
exe_name
}
${
TEST_SRC
}
)
if
(
USE_SOLUTION_FOLDERS
)
SET_PROPERTY
(
TARGET
${
exe_name
}
PROPERTY FOLDER
"api_test"
)
get_filename_component
(
TEST_EXE_NAME
${
TEST_SRC
}
NAME_WE
)
if
(
NOT ENABLE_FFMPEG
)
# 过滤掉依赖 FFmpeg 的测试模块
if
(
"
${
TEST_EXE_NAME
}
"
MATCHES
"player_opencv"
)
continue
()
endif
()
endif
()
if
(
MSVC
)
set_target_properties
(
${
exe_name
}
PROPERTIES COMPILE_FLAGS
${
VS_FALGS
}
)
endif
()
message
(
STATUS
"add c api tester:
${
TEST_EXE_NAME
}
"
)
set
(
exe_name api_tester_
${
TEST_EXE_NAME
}
)
add_executable
(
${
exe_name
}
${
TEST_SRC
}
)
if
(
USE_SOLUTION_FOLDERS
)
set_property
(
TARGET
${
exe_name
}
PROPERTY FOLDER
"api_test"
)
endif
()
target_link_libraries
(
${
exe_name
}
mk_api
)
target_link_libraries
(
${
exe_name
}
mk_api
)
target_compile_options
(
${
exe_name
}
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
endforeach
()
...
...
player/CMakeLists.txt
查看文件 @
9d3ead61
if
(
NOT ENABLE_FFMPEG
)
return
()
endif
()
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
set
(
LINK_LIBRARIES
${
MK_LINK_LIBRARIES
}
)
find_package
(
PkgConfig QUIET
)
#查找SDL2是否安装
if
(
PKG_CONFIG_FOUND
)
pkg_check_modules
(
SDL2 QUIET IMPORTED_TARGET sdl2
)
if
(
SDL2_FOUND
)
include_directories
(
${
SDL2_INCLUDE_DIRS
}
)
link_directories
(
${
SDL2_LIBRARY_DIRS
}
)
list
(
APPEND LINK_LIB_LIST
${
SDL2_LIBRARIES
}
)
message
(
STATUS
"found library:
${
SDL2_LIBRARIES
}
"
)
endif
()
else
()
find_package
(
SDL2 QUIET
)
if
(
SDL2_FOUND
)
include_directories
(
${
SDL2_INCLUDE_DIR
}
)
list
(
APPEND LINK_LIB_LIST
${
SDL2_LIBRARY
}
)
message
(
STATUS
"found library:
${
SDL2_LIBRARY
}
"
)
endif
(
SDL2_FOUND
)
endif
()
# 查找 SDL2 是否安装
if
(
PKG_CONFIG_FOUND
)
pkg_check_modules
(
SDL2 QUIET IMPORTED_TARGET sdl2
)
if
(
SDL2_FOUND
)
list
(
APPEND LINK_LIBRARIES PkgConfig::SDL2
)
message
(
STATUS
"found library:
${
SDL2_LIBRARIES
}
"
)
endif
()
else
()
find_package
(
SDL2 QUIET
)
if
(
SDL2_FOUND
)
include_directories
(
SYSTEM
${
SDL2_INCLUDE_DIR
}
)
list
(
APPEND LINK_LIBRARIES
${
SDL2_LIBRARY
}
)
message
(
STATUS
"found library:
${
SDL2_LIBRARY
}
"
)
endif
()
endif
()
set
(
PLAYER_NAME
"test_player"
)
#
如果
ffmpeg/libavcodec ffmpeg/libavcodec SDL 都安装了则编译播放器
if
(
NOT SDL2_FOUND
)
message
(
STATUS
"
${
PLAYER_NAME
}
disabled, please install sdl2 ffmpeg/libavcodec ffmpeg/libavutil ffmpeg/libswresample"
)
return
()
endif
()
#
如果
ffmpeg/libavcodec ffmpeg/libavcodec SDL 都安装了则编译播放器
if
(
NOT SDL2_FOUND
)
message
(
WARNING
"
${
PLAYER_NAME
}
disabled, please install sdl2 ffmpeg/libavcodec ffmpeg/libavutil ffmpeg/libswresample"
)
return
()
endif
()
message
(
STATUS
"
${
PLAYER_NAME
}
enabled"
)
aux_source_directory
(
. SRC_LIST
)
add_executable
(
${
PLAYER_NAME
}
${
SRC_LIST
}
)
target_compile_definitions
(
${
PLAYER_NAME
}
PRIVATE
${
MK_COMPILE_DEFINITIONS
}
)
target_compile_options
(
${
PLAYER_NAME
}
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
if
(
MSVC
)
set_target_properties
(
${
PLAYER_NAME
}
PROPERTIES COMPILE_FLAGS
${
VS_FALGS
}
)
set_target_properties
(
${
PLAYER_NAME
}
PROPERTIES LINK_FLAGS
"/SAFESEH:NO /SUBSYSTEM:WINDOWS"
)
endif
()
# TODO: 统一参数?
if
(
MSVC
)
set_target_properties
(
${
PLAYER_NAME
}
PROPERTIES LINK_FLAGS
"/SAFESEH:NO /SUBSYSTEM:WINDOWS"
)
endif
()
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
${
PLAYER_NAME
}
-Wl,--start-group
${
LINK_LIB_LIST
}
-Wl,--end-group
)
else
()
target_link_libraries
(
${
PLAYER_NAME
}
${
LINK_LIB_LIST
}
)
endif
()
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
${
PLAYER_NAME
}
-Wl,--start-group
${
LINK_LIBRARIES
}
-Wl,--end-group
)
else
()
target_link_libraries
(
${
PLAYER_NAME
}
${
LINK_LIBRARIES
}
)
endif
()
server/CMakeLists.txt
查看文件 @
9d3ead61
include_directories
(
../3rdpart
)
file
(
GLOB jsoncpp_src_list ../3rdpart/jsoncpp/*.cpp ../3rdpart/jsoncpp/*.h
)
add_library
(
jsoncpp STATIC
${
jsoncpp_src_list
}
)
file
(
GLOB MediaServer_src_list ./*.cpp ./*.h
)
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
if
(
ENABLE_SERVER_LIB
)
add_definitions
(
-DDISABLE_MAIN
)
add_library
(
MediaServer STATIC
${
MediaServer_src_list
}
)
list
(
APPEND LINK_LIB_LIST MediaServer jsoncpp
)
set
(
LINK_LIB_LIST
${
LINK_LIB_LIST
}
PARENT_SCOPE
)
return
()
endif
()
file
(
GLOB MediaServer_SRC_LIST ./*.cpp ./*.h
)
add_executable
(
MediaServer
${
MediaServer_src_list
}
)
set
(
COMPILE_DEFINITIONS
${
MK_COMPILE_DEFINITIONS
}
)
if
(
MSVC
)
set_target_properties
(
MediaServer PROPERTIES COMPILE_FLAGS
${
VS_FALGS
}
)
else
()
install
(
TARGETS MediaServer DESTINATION
${
INSTALL_PATH_EXECUTABLE
}
)
if
(
ENABLE_SERVER_LIB
)
list
(
APPEND COMPILE_DEFINITIONS DISABLE_MAIN
)
add_library
(
MediaServer STATIC
${
MediaServer_SRC_LIST
}
)
target_compile_definitions
(
MediaServer
PRIVATE
${
COMPILE_DEFINITIONS
}
)
target_compile_options
(
MediaServer
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
update_cached
(
MK_LINK_LIBRARIES MediaServer
)
return
()
endif
()
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
MediaServer -Wl,--start-group jsoncpp
${
LINK_LIB_LIST
}
-Wl,--end-group
)
else
()
target_link_libraries
(
MediaServer jsoncpp
${
LINK_LIB_LIST
}
)
endif
()
add_executable
(
MediaServer
${
MediaServer_SRC_LIST
}
)
install
(
TARGETS MediaServer DESTINATION
${
INSTALL_PATH_RUNTIME
}
)
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
MediaServer -Wl,--start-group
${
MK_LINK_LIBRARIES
}
-Wl,--end-group
)
else
()
target_link_libraries
(
MediaServer
${
MK_LINK_LIBRARIES
}
)
endif
()
src/CMakeLists.txt
0 → 100644
查看文件 @
9d3ead61
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
file
(
GLOB MediaKit_SRC_LIST
${
CMAKE_CURRENT_SOURCE_DIR
}
/*/*.c
${
CMAKE_CURRENT_SOURCE_DIR
}
/*/*.cpp
${
CMAKE_CURRENT_SOURCE_DIR
}
/*/*.h
)
if
(
USE_SOLUTION_FOLDERS
AND
(
NOT GROUP_BY_EXPLORER
))
# 在 IDE 中对文件进行分组, 源文件和头文件分开
set_file_group
(
"
${
CMAKE_CURRENT_SOURCE_DIR
}
"
${
MediaKit_SRC_LIST
}
)
endif
()
# 添加库
add_library
(
zlmediakit STATIC
${
MediaKit_SRC_LIST
}
)
add_library
(
ZLMediaKit::MediaKit ALIAS zlmediakit
)
set
(
LINK_LIBRARIES
${
MK_LINK_LIBRARIES
}
)
list
(
REMOVE_ITEM LINK_LIBRARIES ZLMediaKit::MediaKit
)
set
(
COMPILE_DEFINITIONS
${
MK_COMPILE_DEFINITIONS
}
)
target_compile_definitions
(
zlmediakit
PRIVATE
${
COMPILE_DEFINITIONS
}
)
target_compile_options
(
zlmediakit
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_link_libraries
(
zlmediakit
PRIVATE
${
LINK_LIBRARIES
}
)
target_include_directories
(
zlmediakit
PRIVATE
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
PUBLIC
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
)
update_cached_list
(
MK_LINK_LIBRARIES ZLMediaKit::MediaKit
)
# 未在使用
if
(
ENABLE_CXX_API
)
# 保留目录结构
install
(
DIRECTORY
${
MediaKit_Root
}
/
DESTINATION
${
INSTALL_PATH_INCLUDE
}
/ZLMediaKit
REGEX
".*[.](md|cpp)$"
EXCLUDE
)
install
(
TARGETS zlmediakit
DESTINATION
${
INSTALL_PATH_LIB
}
)
endif
()
srt/CMakeLists.txt
0 → 100644
查看文件 @
9d3ead61
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
file
(
GLOB SRT_SRC_LIST *.cpp *.h *.hpp
)
add_library
(
srt STATIC
${
SRT_SRC_LIST
}
)
add_library
(
ZLMediaKit::SRT ALIAS srt
)
target_link_libraries
(
srt
PUBLIC
ZLMediaKit::MediaKit
ZLMediaKit::ToolKit
)
target_compile_options
(
srt
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_include_directories
(
srt
PRIVATE
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
PUBLIC
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
/..>"
)
update_cached_list
(
MK_COMPILE_DEFINITIONS ENABLE_SRT
)
update_cached_list
(
MK_LINK_LIBRARIES ZLMediaKit::SRT
)
message
(
STATUS
"srt 功能已开启"
)
tests/CMakeLists.txt
查看文件 @
9d3ead61
execute_process
(
COMMAND cp
${
CMAKE_CURRENT_SOURCE_DIR
}
/default.pem
${
EXECUTABLE_OUTPUT_PATH
}
/
)
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
execute_process
(
COMMAND cp
${
CMAKE_CURRENT_SOURCE_DIR
}
/default.pem
${
EXECUTABLE_OUTPUT_PATH
}
/
)
aux_source_directory
(
. TEST_SRC_LIST
)
foreach
(
TEST_SRC
${
TEST_SRC_LIST
}
)
get_filename_component
(
TEST_EXE_NAME
${
TEST_SRC
}
NAME_WE
)
if
(
NOT ENABLE_WEBRTC
)
# 暂时过滤掉依赖 WebRTC 的测试模块
if
(
"
${
TEST_EXE_NAME
}
"
MATCHES
"test_rtcp_nack"
)
continue
()
endif
()
endif
()
message
(
STATUS
"add test:
${
TEST_EXE_NAME
}
"
)
add_executable
(
${
TEST_EXE_NAME
}
${
TEST_SRC
}
)
if
(
USE_SOLUTION_FOLDERS
)
SET_PROPERTY
(
TARGET
${
TEST_EXE_NAME
}
PROPERTY FOLDER
"test"
)
endif
()
if
(
MSVC
)
set_target_properties
(
${
TEST_EXE_NAME
}
PROPERTIES COMPILE_FLAGS
${
VS_FALGS
}
)
endif
()
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
${
TEST_EXE_NAME
}
-Wl,--start-group
${
LINK_LIB_LIST
}
-Wl,--end-group
)
else
()
target_link_libraries
(
${
TEST_EXE_NAME
}
${
LINK_LIB_LIST
}
)
endif
()
endforeach
()
foreach
(
TEST_SRC
${
TEST_SRC_LIST
}
)
get_filename_component
(
TEST_EXE_NAME
${
TEST_SRC
}
NAME_WE
)
if
(
NOT ENABLE_WEBRTC
)
# 暂时过滤掉依赖 WebRTC 的测试模块
if
(
"
${
TEST_EXE_NAME
}
"
MATCHES
"test_rtcp_nack"
)
continue
()
endif
()
endif
()
message
(
STATUS
"add test:
${
TEST_EXE_NAME
}
"
)
add_executable
(
${
TEST_EXE_NAME
}
${
TEST_SRC
}
)
if
(
USE_SOLUTION_FOLDERS
)
SET_PROPERTY
(
TARGET
${
TEST_EXE_NAME
}
PROPERTY FOLDER
"test"
)
endif
()
if
(
MSVC
)
set_target_properties
(
${
TEST_EXE_NAME
}
PROPERTIES COMPILE_FLAGS
${
VS_FALGS
}
)
endif
()
if
(
CMAKE_SYSTEM_NAME MATCHES
"Linux"
)
target_link_libraries
(
${
TEST_EXE_NAME
}
-Wl,--start-group
${
MK_LINK_LIBRARIES
}
-Wl,--end-group
)
else
()
target_link_libraries
(
${
TEST_EXE_NAME
}
${
MK_LINK_LIBRARIES
}
)
endif
()
endforeach
()
webrtc/CMakeLists.txt
0 → 100644
查看文件 @
9d3ead61
# MIT License
#
# Copyright (c) 2016-2022 The ZLMediaKit project authors. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# 查找 srtp 是否安装
find_package
(
SRTP QUIET
)
if
(
NOT SRTP_FOUND OR NOT ENABLE_OPENSSL
)
set
(
ENABLE_WEBRTC OFF
)
message
(
WARNING
"srtp 未找到, WebRTC 相关功能打开失败"
)
return
()
endif
()
message
(
STATUS
"found library:
${
SRTP_LIBRARIES
}
"
)
include_directories
(
SYSTEM
${
SRTP_INCLUDE_DIRS
}
)
set
(
LINK_LIBRARIES
${
SRTP_LIBRARIES
}
)
find_package
(
SCTP QUIET
)
if
(
SCTP_FOUND
)
message
(
STATUS
"found library:
${
SCTP_INCLUDE_DIRS
}
${
SCTP_LIBRARIES
}
"
)
include_directories
(
SYSTEM
${
SCTP_INCLUDE_DIRS
}
)
update_cached_list
(
MK_COMPILE_DEFINITIONS ENABLE_SCTP
)
update_cached_list
(
LINK_LIBRARIES
${
SCTP_LIBRARIES
}
)
message
(
STATUS
"WebRTC datachannel 功能已打开"
)
endif
()
file
(
GLOB WEBRTC_SRC_LIST
${
CMAKE_CURRENT_SOURCE_DIR
}
/*.cpp
${
CMAKE_CURRENT_SOURCE_DIR
}
/*.h
${
CMAKE_CURRENT_SOURCE_DIR
}
/*.hpp
)
add_library
(
webrtc
${
WEBRTC_SRC_LIST
}
)
add_library
(
ZLMediaKit::WebRTC ALIAS webrtc
)
target_compile_options
(
webrtc
PRIVATE
${
COMPILE_OPTIONS_DEFAULT
}
)
target_link_libraries
(
webrtc
PRIVATE
ZLMediaKit::MediaKit
ZLMediaKit::ToolKit
PUBLIC
${
LINK_LIBRARIES
}
)
target_include_directories
(
webrtc
PRIVATE
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
>"
PUBLIC
"$<BUILD_INTERFACE:
${
CMAKE_CURRENT_SOURCE_DIR
}
/..>"
)
message
(
STATUS
"WebRTC 功能已开启"
)
update_cached_list
(
MK_COMPILE_DEFINITIONS ENABLE_WEBRTC
)
update_cached_list
(
MK_LINK_LIBRARIES ZLMediaKit::WebRTC
${
LINK_LIBRARIES
}
)
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论