CMake

#cmake所需最小版本
cmake_minimum_required(VERSION 2.8)
#添加c++語言支持
ENABLE_LANGUAGE(CXX)
#PROJECT(projectname [CXX] [C] [Java])指定項目名稱和工程支持語言
project(client)

# if(NOT CMAKE_BUILD_TYPE)
#   set(CMAKE_BUILD_TYPE "Release")
# endif()

#-Wall顯示全部警告 -g添加gdb調試支持
set(CMAKE_CXX_FLAGS
    " -std=c++11 -g -Wall")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

#不作優化
set(CMAKE_CXX_FLAGS_DEBUG "-O0")
# set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")

#CMAKE_CURRENT_SOURCE_DIR 指的是當前處理的 CMakeLists.txt 所在的路徑
set(PROJ_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src)

# find_library(G3LOGGER name g3logger)

#INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
#這條指令能夠用來向工程添加多個特定的頭文件搜索路徑,路徑之間用空格分割

include_directories(${PROJ_SOURCE_DIR})

# include_directories(${PROJ_SOURCE_DIR}/g3log/include/)
# include_directories(${PROJ_SOURCE_DIR}/g3log/src/)

#添加子文件夾
add_subdirectory(src)

add_subdirectory(test)
#在 CMakeLists.txt 處理過程當中執行命令
exec_program("cp ${CMAKE_CURRENT_BINARY_DIR}/compile_commands.json ${CMAKE_CURRENT_SOURCE_DIR}/")
include_directories(${CMAKE_CURRENT_SOURCE_DIR})

# include_directories(${CMAKE_CURRENT_BINARY_DIR}/g3log/include/)
# include_directories(${CMAKE_CURRENT_SOURCE_DIR}/g3log/src/)

# add_subdirectory(parser)

add_subdirectory(concurrency)

add_subdirectory(logger)

add_subdirectory(base)

add_subdirectory(netbase)
file(GLOB ProtoFiles "${CMAKE_CURRENT_SOURCE_DIR}/*.proto")
PROTOBUF_GENERATE_CPP(ProtoSources ProtoHeaders ${ProtoFiles})

add_library(messages STATIC ${ProtoSources} ${ProtoHeaders})
target_link_libraries(messages ${PROTOBUF_LIBRARY})

set(ProtobufIncludePath ${CMAKE_CURRENT_BINARY_DIR}
    CACHE INTERNAL "Path to generated protobuf files.")

# aux_source_directory(. libarbicore_scs)
set(libarbicore_scs
    ArbiClient.cc
    ArbiServer.cc
    # arbit.pb.cc
    config_opts.cc
    )
add_library(arbicore STATIC ${libarbicore_scs})

target_link_libraries(arbicore ${PROTOBUF_LIBRARIES}  messages gflags)
# target_link_libraries(arbicore protobuf gflags)
# target_compile_

add_executable(startArbiServer
    startArbiServer.cc
    )
# target_link_libraries(startArbiServer arbicommon arbilogger arbicore netbase)
target_link_libraries(startArbiServer arbilogger arbicore netbase arbibase)
相關文章
相關標籤/搜索