心胸决定格局,眼界决定境界...

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})

posted @ 2016-01-26 10:18  WELEN  阅读(675)  评论(0)    收藏  举报