代码拉取完成,页面将自动刷新
# lib文件输出的目录
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
# exe文件输出的目录
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
# 项目名称
set(APP_NAME WebServer)
# cmake版本
cmake_minimum_required(VERSION 3.10.2)
# 项目版本
project(${APP_NAME} VERSION 1.0.0)
# 根目录
set(BASE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
# 入口文件
set(MAIN_CPP "${BASE_DIR}/main.cpp")
# .h文件
set(HEAD_FILES)
# .cpp文件
set(SRC_FILES)
# 递归搜索
file(GLOB_RECURSE HEAD_FILES "${BASE_DIR}/*.h")
file(GLOB_RECURSE SRC_FILES "${BASE_DIR}/*.cpp")
# 除去入口文件都编译为lib
list(REMOVE_ITEM SRC_FILES ${MAIN_CPP})
# 编译并链接lib
list(LENGTH SRC_FILES SRC_LENGTH)
if(${SRC_LENGTH})
add_library(serverlib ${SRC_FILES})
link_libraries(serverlib)
endif()
# 编译入口文件+所有头文件
function(include_sub_directories_recursively root_dir)
if (IS_DIRECTORY ${root_dir}) # 当前路径是一个目录吗,是的话就加入到包含目录
# list(APPEND INC_DIR ${root_dir})
message(${root_dir})
include_directories(${root_dir})
endif()
file(GLOB ALL_SUB RELATIVE ${root_dir} ${root_dir}/*) # 获得当前目录下的所有文件,让如ALL_SUB列表中
foreach(sub ${ALL_SUB})
if (IS_DIRECTORY ${root_dir}/${sub})
include_sub_directories_recursively(${root_dir}/${sub}) # 对子目录递归调用,包含
endif()
endforeach()
endfunction()
# set(INC_DIR)
message("entry : ${MAIN_CPP}")
message("includes : ")
include_sub_directories_recursively(${BASE_DIR})
# include_directories(
# "${BASE_DIR}/data"
# "${BASE_DIR}/protocal"
# "${BASE_DIR}/thread"
# "${BASE_DIR}/utils"
# "${BASE_DIR}/web"
# )
add_executable(server ${MAIN_CPP})
# 链接pthread
target_link_libraries(server pthread)
# 打印信息
message("headers : ")
foreach(_var ${HEAD_FILES})
message("${_var}")
endforeach()
message("libs : ")
foreach(_var ${SRC_FILES})
message("${_var}")
endforeach()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。