deviceAccessLayer/CMakeLists.txt

83 lines
2.3 KiB
CMake

cmake_minimum_required(VERSION 3.31)
project(deviceAccessLayer)
set(CMAKE_CXX_STANDARD 20)
set(PACKAGE_DIRS
${CMAKE_CURRENT_LIST_DIR}/lib/openssl
${CMAKE_CURRENT_LIST_DIR}/lib/HCNetSDK
)
foreach (PACKAGE_DIR ${PACKAGE_DIRS})
list(APPEND CMAKE_PREFIX_PATH ${PACKAGE_DIR})
endforeach ()
find_package(openssl CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)
find_package(mqtt_cpp_iface CONFIG REQUIRED)
find_package(HCNet CONFIG REQUIRED)
find_package(ICU REQUIRED COMPONENTS uc)
find_path(CPP_HTTPLIB_INCLUDE_DIRS "httplib.h") # 使用时要先于 windows.h 包含
find_path(CPPCODEC_INCLUDE_DIRS "cppcodec/base32_crockford.hpp")
#find_library(WS2_32_LIB NAMES ws2_32)
set(SOURCE_DIRS
src/common
src/vidicon
src/report_svr
src/barrier
src/sound_column
src/http
src/controller
src/mqtt
src/oss
src/serial_port
src/platform_scale
src
)
set(INCLUDE_DIRS
src
${CPP_HTTPLIB_INCLUDE_DIRS}
${CPPCODEC_INCLUDE_DIRS}
)
list(REMOVE_DUPLICATES INCLUDE_DIRS)
set(LINK_DIRS
src
)
set(LIBRARIES
# ${WS2_32_LIB}
openssl::libssl
openssl::libcrypto
mqtt_cpp_iface::mqtt_cpp_iface
nlohmann_json::nlohmann_json
spdlog::spdlog
HCNet::HCNetSDK
HCNet::HCCore
ICU::uc
)
set(SOURCES "")
foreach (SOURCE_DIR ${SOURCE_DIRS})
file(GLOB_RECURSE SOURCE_FILE "${SOURCE_DIR}/*.cpp" "${SOURCE_DIR}/*.c")
list(APPEND SOURCES ${SOURCE_FILE})
endforeach ()
add_compile_options("/utf-8" "/bigobj")
file(COPY ${CMAKE_CURRENT_LIST_DIR}/config/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/config/)
add_executable(${PROJECT_NAME} main.cpp ${SOURCES})
target_include_directories(${PROJECT_NAME} PRIVATE ${INCLUDE_DIRS})
target_link_directories(${PROJECT_NAME} PRIVATE ${LINK_DIRS})
target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARIES})
target_compile_definitions(${PROJECT_NAME} PUBLIC
UNICODE # 启用 windows 的宽字符 API
NOMINMAX # 防止 windows 库与标准库中的 min、max 冲突
SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_INFO # 启用日志宏
CPPHTTPLIB_OPENSSL_SUPPORT # httplib 支持 openssl
MQTT_STD_VARIANT
_WIN32_WINNT=0x0601
)