# 在这里直接包含所有的库,工程可以根据所需的库进行链接 #在外面使用时,只需要包含这个文件即可 message(STATUS "==================================================") message(STATUS "系统: ${CMAKE_SYSTEM_NAME}") message(STATUS "编译器: ${CMAKE_CXX_COMPILER_ID} 版本: ${CMAKE_CXX_COMPILER_VERSION}") message(STATUS "C++版本: ${CMAKE_CXX_STANDARD}") message(STATUS "编译类型: ${CMAKE_BUILD_TYPE}") if(CMAKE_SIZEOF_VOID_P MATCHES 8) message(STATUS "系统位数: 64-bit") elseif(CMAKE_SIZEOF_VOID_P MATCHES 4) message(STATUS "系统位数: 32-bit") endif() #区分是Qt5还是Qt6 if(Qt5_FOUND) message(STATUS "Qt 版本: ${Qt5_VERSION}") elseif(Qt6_FOUND) message(STATUS "Qt 版本: ${Qt6_VERSION}") endif() message(STATUS "==================================================") #========================================================= #********************* 搜索所有的库 ********************* #========================================================= # 这一段主要是搜索生成的标准开源库 # fmt、spdlog等 # fmt和spdlog的64位支持动态库和静态库,32位只支持静态库 # spdlog设置 ENABLE_SPDLOG_STATIC_LIB = TRUE,使用静态库,否则使用动态库,默认使用动态库 # CURL只支持动态库,debug版本的.cmake文件也经过修改,全部指向release版本的动态库,方便和LHHTTPAPI一起调用 if(CMAKE_SYSTEM_NAME MATCHES "Windows") #spdlog和fmt区分位置,分为64位和32位,静态库和动态库,debug和release if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") #64位的spdlog有两个版本,一个是静态库,一个是动态库 if(CMAKE_SIZEOF_VOID_P MATCHES 8) #添加Curl库 # set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3/lib/cmake/CURL) #判断有没有设置静态库标志,64位默认使用动态库 # if(ENABLE_SPDLOG_STATIC_LIB) # set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static/lib/cmake/fmt) # set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static/lib/cmake/spdlog) # else() # set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3/lib/cmake/fmt) # set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3/lib/cmake/spdlog) # endif() #32位 elseif(CMAKE_SIZEOF_VOID_P MATCHES 4) # set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_32/lib/cmake/CURL) #fmt和spdlog的32位只有静态库 # set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static_32/lib/cmake/fmt) # set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/gcc7.3_static_32/lib/cmake/spdlog) endif() #MSVC只有动态库,且不支持32位 elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") # set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/msvc2022/lib/cmake/fmt) # set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/msvc2022/lib/cmake/spdlog) endif() #Linux只有64位,动态库和静态库都可以选择 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") # message(STATUS "Using ${CMAKE_SYSTEM_NAME} System") #添加Curl库 # set(CURL_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/CURL) # set(hiredis_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/hiredis) # if(ENABLE_SPDLOG_STATIC_LIB) # set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3_static/lib/cmake/fmt) # set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3_static/lib/cmake/spdlog) # else() # set(fmt_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/fmt) # set(spdlog_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/spdlog) # endif() # set(freetype_DIR ${CMAKE_CURRENT_LIST_DIR}/linux_gcc8.3/lib/cmake/freetype) endif() #========================================================= #添加MODULE模式搜索其他库的路径,不是标准的开源库 # list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/fmt) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/spdlog) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/sm_dll) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/qmqtt) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/LHQLog) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/LHHTTPAPI) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/OpenSSL-1.1.1) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/ssh2) list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/hiredis) #添加CURL的路径,目前Linux 使用单独编译的,使用上面的OpenSSL库 list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/CURL) #链接FreeType库,目前只支持Windows list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/FreeType) #搜索所有的库 # find_package(fmt REQUIRED) find_package(spdlog REQUIRED) #链接curl库,使用的是CURL::libcurl find_package(CURL REQUIRED) #在Windows中可能有冲突的地方,直接指明路径 # find_package(Freetype REQUIRED PATHS ${freetype_DIR}) find_package(qmqtt REQUIRED) find_package(SM REQUIRED) #LHLog和LHHTTP使用动态加载的方式调用,在工程中不需要连接库,只需要包含头文件即可 find_package(LHQLog REQUIRED) find_package(LHHTTPAPI REQUIRED) #FreeType库 #有些库缺少某些平台、编译器的库,所以这里也根据平台、编译器进行搜索 if(CMAKE_SYSTEM_NAME MATCHES "Windows") find_package(FreeType REQUIRED) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") endif() #Linux只有64位,动态库和静态库都可以选择 elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") #链接OpenSSL-1.1.1库 find_package(OpenSSL-1.1.1 REQUIRED) #链接ssh2库 find_package(ssh2 REQUIRED) #hiredis库 find_package(hiredis REQUIRED) endif() #========================================================= #******************* 打印搜索到的信息 ******************* #========================================================= #打印搜索到的信息 message(STATUS "==================================================") message(STATUS "fmt Found: ${fmt_FOUND}") message(STATUS "fmt Version: ${fmt_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "spdlog FOUND: ${spdlog_FOUND}") message(STATUS "spdlog Version: ${spdlog_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "FreeType Found : ${Freetype_FOUND}") message(STATUS "FreeType Version : ${Freetype_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "qmqtt Found : ${qmqtt_FOUND}") message(STATUS "qmqtt Version : ${qmqtt_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "SM_LIBRARY FOUND: ${SM_FOUND}") message(STATUS "SM_LIBRARY Version: ${SM_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "LHQLog Found : ${LHQLog_FOUND}") message(STATUS "LHQLog Version : ${LHQLog_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "LHHTTPAPI Found : ${LHHTTPAPI_FOUND}") message(STATUS "LHHTTPAPI Version : ${LHHTTPAPI_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "OpenSSL Found : ${OpenSSL-1.1.1_FOUND}") message(STATUS "OpenSSL Version : ${OpenSSL-1.1.1_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "ssh2 Found : ${ssh2_FOUND}") message(STATUS "ssh2 Version : ${ssh2_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "CURL Found : ${CURL_FOUND}") message(STATUS "CURL Version : ${CURL_VERSION}") message(STATUS "--------------------------------------------------") message(STATUS "hiredis Found : ${hiredis_FOUND}") message(STATUS "hiredis Version : ${hiredis_VERSION}") message(STATUS "--------------------------------------------------")