-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCMakeLists.txt
145 lines (119 loc) · 3.33 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
cmake_minimum_required(VERSION 3.12)
project(ABLMediaServer)
# 设置编译选项
set(CMAKE_CXX_STANDARD 11)
#set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O0 -Wall")
# 添加宏定义
add_definitions(-DFFMPEG6)
# 允许相对路径
set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
# 判断是否启用了 USE_BOOST 选项
option(USE_BOOST "Use Boost library" OFF)
if(USE_BOOST)
add_definitions(-DUSE_BOOST)
# 添加 Boost 头文件目录
include_directories(
./3rd/boost/include/
)
endif()
# 设置输出目录
message("当前系统架构: ${CMAKE_SYSTEM_PROCESSOR}")
set(SYSTEM_NAME_LOWER "amd64") # 自定义系统名称
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release") # 自定义构建类型
endif()
# 根据不同架构设置输出目录和链接目录
if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/linux86)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/linux86)
# 设置链接目录
set(LIBRARY_DIR
${CMAKE_CURRENT_SOURCE_DIR}/bin/linux86
${CMAKE_CURRENT_SOURCE_DIR}/media-server-master/${SYSTEM_NAME_LOWER}
${CMAKE_CURRENT_SOURCE_DIR}/3rd/ffmpeg6/lib/linux86
${CMAKE_CURRENT_SOURCE_DIR}/3rd/boost/linux86
)
elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/arm64)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin/arm64)
# 设置链接目录
set(LIBRARY_DIR
${CMAKE_CURRENT_SOURCE_DIR}/bin/arm64
${CMAKE_CURRENT_SOURCE_DIR}/media-server-master/${SYSTEM_NAME_LOWER}
${CMAKE_CURRENT_SOURCE_DIR}/3rd/ffmpeg6/lib/arm64
${CMAKE_CURRENT_SOURCE_DIR}/3rd/boost/arm64
)
endif()
# 设置库文件链接路径
link_directories(${LIBRARY_DIR})
# 设置头文件包含路径
include_directories(
./3rd/ffmpeg6/include
./rapidjson-master/include
./media-server-master/libflv/include
./media-server-master/librtmp/include
./media-server-master/libmpeg/include
./media-server-master/libhls/include
./media-server-master/librtp/include
./media-server-master/libmov/include
./ABLMediaServer/
./3rd/spdlog/include
)
# 添加子目录,这样子目录中的CMakeLists.txt才会被调用
#add_subdirectory(webrtc-streamer)
# 添加子目录,
#add_subdirectory(XHNetSDK)
# 链接静态库
link_libraries(
rtmp
flv
mpeg
hls
mov
rtp
)
# 添加源文件
file(GLOB ABL_SRCS
./ABLMediaServer/*.cpp
./ABLMediaServer/*.cc
./ABLMediaServer/ffmpeg/*.cpp
)
# 添加可执行文件
add_executable(${PROJECT_NAME} ${ABL_SRCS})
#设置RPATH路径
set_target_properties(${BUILD_PROJECT_NAME} PROPERTIES INSTALL_RPATH "$ORIGIN")
# 链接需要的库文件
target_link_libraries(${PROJECT_NAME}
PUBLIC
faac
avcodec
avutil
avformat
swscale
avfilter
postproc
swresample
pthread
XHNetSDK
PsDemux
PsMux
RtpDepacket
RtpPacket
webrtc-streamer
dl
)
# 如果启用了 USE_BOOST 选项,则链接 Boost 库文件
if(USE_BOOST)
target_link_libraries(${PROJECT_NAME}
PUBLIC
boost_system
boost_thread
boost_log
boost_regex
boost_filesystem
boost_date_time
boost_chrono
boost_atomic
)
endif()