83 lines
2.3 KiB
CMake
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
|
|
)
|