# 版本限定
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
# 項目名稱
PROJECT(test)
# 設置編譯器選項:O3優化,顯示所有警告(根據實際項目的有求選擇性的進行優化)
#SET(CMAKE_C_FLAGS "$ENV{CFLAGS} -O3 -Wall")
# 定義頭文件的路徑變量
SET(INCLUDE_PATH ${CMAKE_CURRENT_LIST_DIR}/include)
MESSAGE(STATUS "Include Path, ${INCLUDE_PATH}")
# 定義源文件路徑變量
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src/test1/ SRC_LIST_T1 )
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src/test2/ SRC_LIST_T2 )
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src/test3/ SRC_LIST_T3 )
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/src/test4/ SRC_LIST_T4)
LIST (APPEND SRC_LIST_ALL
${SRC_LIST_T1}
${SRC_LIST_T2}
${SRC_LIST_T3}
${SRC_LIST_T4}
)
MESSAGE(STATUS "Source Path , ${SRC_LIST_ALL}")
# 包含頭文件路徑
INCLUDE_DIRECTORIES(${INCLUDE_PATH})
# 添加源文件路徑下所有源文件存放到變量中(*.c && *.cpp)
# SET(${SRC_LIST_ALL} SRC_LIST)
# 設置動態庫輸出路徑
SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_LIST_DIR}/lib)
MESSAGE(STATUS "Library Output Path, " ${CMAKE_CURRENT_LIST_DIR/lib})
#設置編譯的部分參數及依賴的庫文件等等【如果要編譯動態庫,則依賴的第三方庫必須是fPIC,否則編譯出錯】
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LOCAL_W_FLAGS} ${LOCAL_C_FLAGS} -fPIC")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LOCAL_W_FLAGS} ${LOCAL_C_FLAGS} -std=c++14 -fPIC")
LINK_DIRECTORIES(${CMAKE_CURRENT_LIST_DIR}/lib/)
LINK_LIBRARIES( z ssl crypto boost_system boost_program_options boost_filesystem boost_date_time boost_context boost_coroutine boost_chrono boost_log boost_thread boost_log_setup boost_regex boost_atomic pthread )
# 生成動態庫(test.so)
ADD_LIBRARY(test SHARED ${SRC_LIST_ALL})
# 生成靜態庫(test.a,target名字只能有一個,所以不能與動態庫的名字一樣)
ADD_LIBRARY(test_static STATIC ${SRC_LIST_ALL})
# 但是可以通過下面的命令更改靜態庫target生成的庫名,這樣就和動態庫的名字一樣的了
SET_TARGET_PROPERTIES(test_static PROPERTIES OUTPUT_NAME "test")