在使用KVS完整的WebRTC的SDK(包括信令、STUN/TURN等),我们还需要编译(详见SDK的依赖项)如下两个库
1、amazon-kinesis-video-streams-producer-c中的libkvsCommonLws.a
编译君正平台:
我们在下载的源码目录中新建如下三个目录:
Bin/T31X :存放生成的库
Build/T31X: 编译脚本
Library/T31X:依赖项
CMakeLists.txt内容如下:
#***************************This is Project Info****************************
PROJECT(kvsCommonLws)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
#****************************This is Compile Flag****************************
ADD_DEFINITIONS("-Wall -fPIC")
ADD_DEFINITIONS("-Wl,-Bsymbolic -lm")
ADD_DEFINITIONS("-std=c++11")
ADD_DEFINITIONS("-DLIBSKYAPI_EXPORTS")
ADD_DEFINITIONS("-DLIBAVXLOG_HAVE_AVXLOG=0")
ADD_DEFINITIONS("-DKVS_USE_OPENSSL=1")
ADD_DEFINITIONS("-DKVS_BUILD_WITH_LWS=1")
SET(CMAKE_CXX_FLAGS "-Wall -s -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fomit-frame-pointer -fvisibility=hidden -ffunction-sections -fdata-sections -Wl,-Bsymbolic -lm -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS")
#****************************This is Compiling environment Flag****************************
SET(CMAKE_SYSTEM_NAME linux)
SET(TOOLCHAIN_DIR "/opt/mips-gcc472-glibc216-64bit")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/mips-linux-uclibc-gnu-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/mips-linux-uclibc-gnu-g++)
#****************************This is Include File/Directories****************************
#INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/)
INCLUDE_DIRECTORIES(../../)
INCLUDE_DIRECTORIES(../../Library/T31X/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/client/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/utils/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/mkvgen/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/view/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/heap/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/state/include)
INCLUDE_DIRECTORIES(../../src)
INCLUDE_DIRECTORIES(../../src/include)
INCLUDE_DIRECTORIES(../../src/source/)
INCLUDE_DIRECTORIES(../../src/source/Common)
INCLUDE_DIRECTORIES(../../src/source/Common/Lws)
INCLUDE_DIRECTORIES(../../Library/T31X/include)
INCLUDE_DIRECTORIES(../../Library/T31X/include/common)
INCLUDE_DIRECTORIES(../../Library/T31X/include/common/include)
#****************************This is Source File/Directories****************************
AUX_SOURCE_DIRECTORY(../../src/source/Common Common_SRCS)
AUX_SOURCE_DIRECTORY(../../src/source/Common/Lws Lws_SRCS)
SET(DIR_SRCS ${Common_SRCS} ${Lws_SRCS})
#****************************This is Library Directories****************************
LINK_DIRECTORIES(../../Library/T31X/lib)
#****************************This is 3Party Library****************************
LINK_LIBRARIES(libkvspic.a libkvspicClient.a libkvspicState.a libkvspicUtils.a libwebsockets.a dl)
#****************************This is Output Directory****************************
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../Bin/T31X)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../Bin/T31X)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../Bin/T31X)
#****************************This is Output Library****************************
ADD_LIBRARY(${PROJECT_NAME} STATIC ${DIR_SRCS} )
TARGET_LINK_LIBRARIES(${PROJECT_NAME} libkvspic.a libkvspicClient.a libkvspicState.a libkvspicUtils.a libwebsockets.a dl)
2、amazon-kinesis-video-streams-webrtc-sdk-c中的libkvsWebrtcSignalingClient.so
我们新建三个目录:
在Build/T31X下新建SignalingClient目录,存放编译脚本:libkvsWebrtcClient.so详见编译;
如下是libkvsWebrtcSignalingClient.so的编译脚本(CMakeLists.txt):
#***************************This is Project Info****************************
PROJECT(kvsWebrtcSignalingClient)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
#****************************This is Compile Flag****************************
ADD_DEFINITIONS("-Wall")
ADD_DEFINITIONS("-Wl,-Bsymbolic -lm")
ADD_DEFINITIONS("-std=c++11")
ADD_DEFINITIONS("-DLIBSKYAPI_EXPORTS")
ADD_DEFINITIONS("-DLIBAVXLOG_HAVE_AVXLOG=0")
ADD_DEFINITIONS("-DKVS_USE_OPENSSL=1")
ADD_DEFINITIONS("-DKVS_BUILD_WITH_LWS=1")
SET(CMAKE_CXX_FLAGS "-Wall -s -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fomit-frame-pointer -fvisibility=hidden -ffunction-sections -fdata-sections -Wl,-Bsymbolic -lm -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS")
#****************************This is Compiling environment Flag****************************
SET(CMAKE_SYSTEM_NAME linux)
SET(TOOLCHAIN_DIR "/opt/mips-gcc472-glibc216-64bit")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/mips-linux-uclibc-gnu-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/mips-linux-uclibc-gnu-g++)
#****************************This is Include File/Directories****************************
#INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR}/)
#INCLUDE_DIRECTORIES(../../../include/)
INCLUDE_DIRECTORIES(../../../Library/T31X/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/client/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/utils/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/mkvgen/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/view/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/heap/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/state/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/common/include)
INCLUDE_DIRECTORIES(../../../src)
INCLUDE_DIRECTORIES(../../../src/include)
INCLUDE_DIRECTORIES(../../../src/source/)
INCLUDE_DIRECTORIES(../../../src/source/Signaling/)
INCLUDE_DIRECTORIES(../../../Library/T31X/include)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/common)
INCLUDE_DIRECTORIES(../../../Library/T31X/include/common/include)
#****************************This is Source File/Directories****************************
SET(LIBSDK_DIRS ../../../src/source)
SET(Single_SRCS ${LIBSDK_DIRS}/Signaling/ChannelInfo.c
${LIBSDK_DIRS}/Signaling/Client.c
${LIBSDK_DIRS}/Signaling/FileCache.c
${LIBSDK_DIRS}/Signaling/LwsApiCalls.c
${LIBSDK_DIRS}/Signaling/Signaling.c
${LIBSDK_DIRS}/Signaling/StateMachine.c
)
SET(DIR_SRCS ${Single_SRCS} )
#****************************This is Library Directories****************************
LINK_DIRECTORIES(../../../Library/T31X/lib)
#****************************This is 3Party Library****************************
LINK_LIBRARIES( kvspicState kvspicUtils crypto ssl libkvsCommonLws.a libwebsockets.a pthread )
#****************************This is Output Directory****************************
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../../Bin/T31X)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../../Bin/T31X)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/../../../Bin/T31X)
#****************************This is Output Library****************************
ADD_LIBRARY(${PROJECT_NAME} SHARED ${DIR_SRCS} )
TARGET_LINK_LIBRARIES(${PROJECT_NAME} kvspicState kvspicUtils crypto ssl libkvsCommonLws.a libwebsockets.a pthread )
编译结果如下: