#指定cmake版本
cmake_minimum_required(VERSION 3.12)

#设置 内置变量
set(CMAKE_CXX_STANDARD 11)

#指定源文件搜索路径,并把这些路径用 all_cpp_file 变量代替
aux_source_directory(${CMAKE_SOURCE_DIR} all_cpp_file)
aux_source_directory(${CMAKE_SOURCE_DIR}/subdir_1 all_cpp_file)
aux_source_directory(${CMAKE_SOURCE_DIR}/subdir_2 all_cpp_file)

#打印一些 内置变量
message("")
message("1.PROJECT_BINARY_DIR = ${PROJECT_BINARY_DIR}")
message("2.PROJECT_SOURCE _DIR = ${_DIR}")
message("3.CMAKE_CURRENT_SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message("4.CMAKE_CURRRENT_BINARY_DIR = ${CMAKE_CURRRENT_BINARY_DIR}")
message("5.CMAKE_CURRENT_LIST_FILE = ${CMAKE_CURRENT_LIST_FILE}")
message("6.CMAKE_CURRENT_LIST_LINE = ${CMAKE_CURRENT_LIST_LINE}")
message("7.CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
message("8.CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message("9.EXECUTABLE_OUTPUT_PATH = ${EXECUTABLE_OUTPUT_PATH}")
message("10.LIBRARY_OUTPUT_PATH = ${LIBRARY_OUTPUT_PATH}")
message("11.PROJECT_NAME = ${PROJECT_NAME}")
message("12.PROJECT_VERSION_MAJOR = ${PROJECT_VERSION_MAJOR}")
message("13.PROJECT_VERSION_MINOR = ${PROJECT_VERSION_MINOR}")
message("14.PROJECT_VERSION_PATCH = ${PROJECT_VERSION_PATCH}")
message("15.CMAKE_SYSTEM = ${CMAKE_SYSTEM}")
message("16.CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}")
message("17.CMAKE_SYSTEM_VERSION = ${CMAKE_SYSTEM_VERSION}")
message("18.BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}")
message("19.CMAKE_C_FLAGS = ${CMAKE_C_FLAGS}")
message("20.CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}")
message("21.CMAKE_SYSTEM_PROCESSOR = ${CMAKE_SYSTEM_PROCESSOR}")
message("")
message("22.all_cpp_file = ${all_cpp_file}")
message("23.all_lib = ${all_lib}")
message("")


#链接库搜索路径; 格式:link-path(library file path)
link_directories(
${CMAKE_SOURCE_DIR}/../lib
)

#项目名
project(projectname)

#工程输出(可执行文件/动态库/静态库),以及工程输出所依赖的所有源文件
add_library(projectname SHARED
${all_cpp_file}
)

#头文件搜索路径; 格式:include-path(head file path)
target_include_directories(projectname PUBLIC
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/base
${CMAKE_SOURCE_DIR}/../include
${CMAKE_SOURCE_DIR}/../include/glog
${CMAKE_SOURCE_DIR}/../include/ffmpeg
${CMAKE_SOURCE_DIR}/../include/cares
${CMAKE_SOURCE_DIR}/../include/eXosip2
${CMAKE_SOURCE_DIR}/../include/osip2
${CMAKE_SOURCE_DIR}/../include/osipparser2
)


#使用到的所有动态库
target_link_libraries(projectname
-lavcodec
-lavdevice
-lavfilter
-lavformat
-lavutil
-lcares #动态库使用soname形式
libeXosip2.a #静态库直接指定文件名
-lglog
-losip2
-losipparser2
-lswresample
-lswscale
)

#predefined macro
ADD_DEFINITIONS(-D LINUX)