cmake_minimum_required(VERSION 3.18)
project(opcua_exporter)

cmake_policy(SET CMP0148 OLD)

set(CMAKE_CXX_STANDARD 20)
option(ENABLE_METRICS_SIMULATE "开启测点故障仿真功能" ON)

find_package(civetweb CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)
find_package(prometheus-cpp CONFIG REQUIRED)
find_package(open62541 CONFIG REQUIRED)
find_package(yaml-cpp CONFIG REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)

add_subdirectory(fault-simulation-algorithm)

include_directories(${CMAKE_CURRENT_SOURCE_DIR})

set(
        OPC_UA_EXPORTER_SRCS
        main.cpp
        client/client.cpp
        client/client.h
        collector/collector.cpp
        collector/collector.h
)

add_executable(
        opcua_exporter
        ${OPC_UA_EXPORTER_SRCS}
)

target_compile_definitions(
        opcua_exporter
        PRIVATE
        ${CMAKE_BUILD_TYPE}
)

if (${ENABLE_METRICS_SIMULATE})
    target_compile_definitions(
            opcua_exporter
            PRIVATE
            METRICS_SIMULATE
    )
endif ()

target_link_libraries(
        opcua_exporter
        simulation-manager
        spdlog::spdlog
        yaml-cpp::yaml-cpp
        nlohmann_json::nlohmann_json
        open62541::open62541
        civetweb::civetweb
        prometheus-cpp::core prometheus-cpp::pull
)