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