CMake编译大综合
#CMake最低版本号要求
cmake_minimum_required (VERSION 2.4)
# 项目信息
project (Stun_Webrtc)
#根据config.h.in,生成config.h文件 config.h.in宏定义 cmakedefine POSIX 1
#configure_file (
# "${PROJECT_SOURCE_DIR}/config.h.in"
# "${PROJECT_BINARY_DIR}/config.h"
# )
#所有的文件需要用到这个POSIX宏,则需要添加这个config.h文件
add_definitions(-DPOSIX)#编译器预定义宏 -D宏
add_definitions(-DLINUX)
add_definitions(-DHAVE_CONFIG_H)
add_definitions(-DSSL_USE_OPENSSL)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")#预编译 选项
#set(OPENSSL_LIBRARIES "/usr/lib64/libssl.so") #OK the same
#target_link_libraries(Stun_Webrtc ${OPENSSL_LIBRARIES})#添加动态库
set (STUN_VERSION_MAJOR 1)
set (STUN_VERSION_MINOR 0)
#set(PROJECT_SOURCE_DIR "/home/LibjingleTest/weiqiwu/stun_webrtc")#指定主目录
SET(EXECUTABLE_OUTPUT_PATH ${Stun_Webrtc_BINARY_DIR}/bin)#设置输出目录
MESSAGE(STATUS "This is BINARY dir " ${Stun_Webrtc_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${PROJECT_SOURCE_DIR})
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/base
${PROJECT_SOURCE_DIR}/talk/base) #不同文件夹下的 所有包含头文件
aux_source_directory(. DIR_SRCS)
aux_source_directory("talk/base" DIR_SRCS_1)#添加指定目录下的 所有源文件
aux_source_directory("talk/p2p/base" DIR_SRCS_2)
list(APPEND DIR_SRCS ${DIR_SRCS_1} ${DIR_SRCS_2}) #将${DIR_SRCS_1} ${DIR_SRCS_2}追加APPEND到DIR_SRCS
# 指定生成目标
add_executable(Stun_Webrtc ${DIR_SRCS})
# Search OpenSSL find_package(PkgConfig REQUIRED)
#用pkg搜索库,需要系统支持pkg命令
pkg_search_module(OPENSSL REQUIRED openssl)
if( OPENSSL_FOUND )
include_directories(${OPENSSL_INCLUDE_DIRS})
message(STATUS "Using OpenSSL ${OPENSSL_VERSION}")
else()
# Error; with REQUIRED, pkg_search_module() will throw an error by it's
# own endif()
target_link_libraries(Stun_Webrtc ${OPENSSL_LIBRARIES})
递归组合当前项目目录下的所有.cpp文件
#搜索该目录下的(包括子目录的所有.cpp文件)
file(GLOB_RECURSE SRC_LIST "*.cpp")
#统一把该列表中的每一项(每一项都是字符串)用;隔开
#由于用不同的分隔符会导致CMake找不到CPP文件的问题
set(tmpstr "")
foreach(file ${SRC_LIST})
set(tmpstr "${tmpstr}${file}/;")
endforeach()
set(SRC_LIST ${tmpstr})

浙公网安备 33010602011771号