CMakeLists.txt 3.91 KB
Newer Older
xiongziliang committed
1
project(ZLMediaKit)
xiongziliang committed
2
cmake_minimum_required(VERSION 3.1.3)
3
#使能c++11
xiongziliang committed
4
set(CMAKE_CXX_STANDARD 11)
xiongziliang committed
5 6

#加载自定义模块
7
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")
xiongziliang committed
8 9 10 11
#设置库文件路径
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)
#设置可执行程序路径
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
xzl committed
12

13
#设置工程源码根目录
14
set(ToolKit_Root ${CMAKE_SOURCE_DIR}/3rdpart/ZLToolKit/src)
15
set(MediaKit_Root ${CMAKE_SOURCE_DIR}/src)
16

17 18 19
#设置头文件目录
INCLUDE_DIRECTORIES(${ToolKit_Root})
INCLUDE_DIRECTORIES(${MediaKit_Root})
20

21 22 23
#收集源代码
file(GLOB ToolKit_src_list ${ToolKit_Root}/*/*.cpp ${ToolKit_Root}/*/*.h ${ToolKit_Root}/*/*.c)
file(GLOB MediaKit_src_list ${MediaKit_Root}/*/*.cpp ${MediaKit_Root}/*/*.h ${MediaKit_Root}/*/*.c)
24

25 26 27
#去除win32的适配代码
if (NOT WIN32)
    list(REMOVE_ITEM ToolKit_src_list ${ToolKit_Root}/win32/getopt.c)
夏楚 committed
28 29
else()
     #防止Windows.h包含Winsock.h
xiongziliang committed
30
    add_definitions(-DWIN32_LEAN_AND_MEAN -DMP4V2_NO_STDINT_DEFS)
31
endif ()
xiongziliang committed
32

33 34 35 36 37 38 39
set(ENABLE_HLS true)
set(ENABLE_OPENSSL true)
set(ENABLE_MYSQL true)
set(ENABLE_MP4V2 true)
set(ENABLE_FAAC true)
set(ENABLE_X264 true)

40
#添加两个静态库
41 42
if(ENABLE_HLS)
    message(STATUS "ENABLE_HLS defined")
xiongziliang committed
43 44 45
    add_definitions(-DENABLE_HLS)
    set(MediaServer_Root ${CMAKE_SOURCE_DIR}/3rdpart/media-server)
    set(LINK_LIB_LIST zlmediakit zltoolkit mpeg)
46 47 48
else()
    set(LINK_LIB_LIST zlmediakit zltoolkit)
endif()
xiongziliang committed
49 50

#查找openssl是否安装
xiongziliang committed
51
find_package(OpenSSL QUIET)
52 53
if (OPENSSL_FOUND AND ENABLE_OPENSSL)
    message(STATUS "found library:${OPENSSL_LIBRARIES},ENABLE_OPENSSL defined")
54 55 56
    include_directories(${OPENSSL_INCLUDE_DIR})
    add_definitions(-DENABLE_OPENSSL)
    list(APPEND LINK_LIB_LIST ${OPENSSL_LIBRARIES})
57
endif ()
xiongziliang committed
58 59 60

#查找mysql是否安装
find_package(MYSQL QUIET)
61 62
if (MYSQL_FOUND AND ENABLE_MYSQL)
    message(STATUS "found library:${MYSQL_LIBRARIES},ENABLE_MYSQL defined")
63
    include_directories(${MYSQL_INCLUDE_DIR})
64
    include_directories(${MYSQL_INCLUDE_DIR}/mysql)
65 66
    add_definitions(-DENABLE_MYSQL)
    list(APPEND LINK_LIB_LIST ${MYSQL_LIBRARIES})
67
endif ()
xiongziliang committed
68

69
#查找MP4V2是否安装
xiongziliang committed
70
find_package(MP4V2 QUIET)
71
if (MP4V2_FOUND AND ENABLE_MP4V2)
72
    include_directories(${MP4V2_INCLUDE_DIR})
73
    list(APPEND LINK_LIB_LIST ${MP4V2_LIBRARY})
74
    add_definitions(-DENABLE_MP4V2)
75 76
    message(STATUS "found library:${MP4V2_LIBRARY},ENABLE_MP4V2 defined")
endif ()
xiongziliang committed
77 78 79

#查找x264是否安装
find_package(X264 QUIET)
80 81
if (X264_FOUND AND ENABLE_X264)
    message(STATUS "found library:${X264_LIBRARIES},ENABLE_X264 defined")
82 83 84
    include_directories(${X264_INCLUDE_DIRS})
    add_definitions(-DENABLE_X264)
    list(APPEND LINK_LIB_LIST ${X264_LIBRARIES})
85
endif ()
xiongziliang committed
86 87 88

#查找faac是否安装
find_package(FAAC QUIET)
89 90
if (FAAC_FOUND AND ENABLE_FAAC)
    message(STATUS "found library:${FAAC_LIBRARIES},ENABLE_FAAC defined")
91 92 93
    include_directories(${FAAC_INCLUDE_DIR})
    add_definitions(-DENABLE_FAAC)
    list(APPEND LINK_LIB_LIST ${FAAC_LIBRARIES})
94
endif ()
xiongziliang committed
95

96

97 98 99 100
#添加库
add_library(zltoolkit STATIC ${ToolKit_src_list})
add_library(zlmediakit STATIC ${MediaKit_src_list})

101 102
			
set(VS_FALGS "/wd4819 /wd4996 /wd4018 /wd4267 /wd4244 /wd4101 /wd4828 /wd4309 /wd4573 /utf-8" )
103
#libmpeg
104 105 106 107 108
if(ENABLE_HLS)
    aux_source_directory(${MediaServer_Root}/libmpeg/include src_mpeg)
    aux_source_directory(${MediaServer_Root}/libmpeg/source src_mpeg)
    include_directories(${MediaServer_Root}/libmpeg/include)
    add_library(mpeg STATIC ${src_mpeg})
109 110 111
	if(WIN32)
		set_target_properties(mpeg PROPERTIES COMPILE_FLAGS  ${VS_FALGS} )
	endif(WIN32)
112
endif()
113

xiongziliang committed
114
if (WIN32)
115
    list(APPEND LINK_LIB_LIST WS2_32 Iphlpapi shlwapi)
116 117
	set_target_properties(zltoolkit PROPERTIES COMPILE_FLAGS ${VS_FALGS} )
	set_target_properties(zlmediakit PROPERTIES COMPILE_FLAGS ${VS_FALGS} )
xiongziliang committed
118
elseif(NOT ANDROID OR IOS)
xiongziliang committed
119
    list(APPEND LINK_LIB_LIST pthread)
120 121
endif ()

122 123


xiongziliang committed
124
#测试程序
125
add_subdirectory(tests)
xiongziliang committed
126

127
#主服务器
xiongziliang committed
128
add_subdirectory(server)
xiongziliang committed
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153