cmake_minimum_required(VERSION 3.5)
project(traffic_light_api)
set(CMAKE_CXX_STANDARD 14)
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
SET(CMAKE_CXX_EXTENSIONS ON)

file(GLOB MSG_PROTOS ${CMAKE_CURRENT_SOURCE_DIR}/proto/*.proto)
set(PROTOS_DST_DIR ${CMAKE_CURRENT_BINARY_DIR}/proto)
message(STATUS "PROTOS_DST_DIR: ${PROTOS_DST_DIR}")
# 检查 PROTOS_DST_DIR 目录是否存在，不存在则创建
if(NOT EXISTS ${PROTOS_DST_DIR})
    file(MAKE_DIRECTORY ${PROTOS_DST_DIR})
endif()
foreach(msg ${MSG_PROTOS})
    message(STATUS "MSG_PROTOS: ${msg}")
    get_filename_component(FIL_WE ${msg} NAME_WE)
    execute_process(
        COMMAND protoc -I ${CMAKE_CURRENT_SOURCE_DIR}/proto --cpp_out=${PROTOS_DST_DIR} ${msg}
    )
endforeach()
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/demo)

# 收集源文件
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/mqtt SRCS)
AUX_SOURCE_DIRECTORY(${PROTOS_DST_DIR} SRCS)
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/api SRCS)

# 构建目标
add_library(${PROJECT_NAME} SHARED ${SRCS})

target_include_directories(${PROJECT_NAME}
PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}
    ${CMAKE_CURRENT_SOURCE_DIR}/mqtt
    ${CMAKE_CURRENT_BINARY_DIR}/proto
)

target_link_libraries(${PROJECT_NAME}
    pthread
    protobuf
    mosquitto
)

