cmake_minimum_required(VERSION 3.5)

project(examples VERSION 1.0.0)

# 导入中间件的库
if(NOT DEFINED ENV{MICAR_MW_CMAKE_FILE})
  message(FATAL_ERROR "not defined environment variable:MICAR_MW_CMAKE_FILE")
endif()
include($ENV{MICAR_MW_CMAKE_FILE})


include($ENV{THIRD_PARTY_CMAKE_FILE})

#设置proto输出路径
SET(PROTO_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET(PROTOBUF_PROTOC_EXECUTABLE ${PROTOC_EXECUTABLE})

message("executable is :${PROTOBUF_PROTOC_EXECUTABLE}")

#设置proto文件的路径
LIST(APPEND PROTO_FLAGS -I${CMAKE_CURRENT_SOURCE_DIR})

# 获取需要编译的pb.cc文件
set(PROTOBUF_GEN_SRC "")
file(GLOB_RECURSE MSG_PROTOS ${CMAKE_CURRENT_SOURCE_DIR}/*.proto)

foreach(msg ${MSG_PROTOS})
  get_filename_component(FIL_WE ${msg} NAME_WE)

  list(APPEND PROTOBUF_GEN_SRC "${PROTO_OUTPUT_DIR}/${FIL_WE}.pb.cc")
  list(APPEND PROTOBUF_GEN_HDRS "${PROTO_OUTPUT_DIR}/${FIL_WE}.pb.h")

  # 生成源码
  # 生成源码
  if(MSVC)
    execute_process(
        COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} ${PROTO_FLAGS} --proto_path=${CMAKE_CURRENT_SOURCE_DIR}
        --cpp_out=dllexport_decl=DLL_EXPORT:${PROTO_OUTPUT_DIR} ${msg}
    )
  else()
    execute_process(
        COMMAND ${PROTOBUF_PROTOC_EXECUTABLE} ${PROTO_FLAGS} --proto_path=${CMAKE_CURRENT_SOURCE_DIR}
        --cpp_out=${PROTO_OUTPUT_DIR} ${msg}
    )
  endif()
endforeach()

include_directories(${PROTO_OUTPUT_DIR})

add_library(mwproto_example STATIC ${PROTOBUF_GEN_SRC})
target_include_directories(mwproto_example PUBLIC ${PROTO_OUTPUT_DIR})
target_link_libraries(mwproto_example PUBLIC
    ${PROTOBUF_LIBRARIES})


add_executable(test_node hello_world_main.cpp)
target_link_libraries(test_node PUBLIC
    mwproto_example
    ${MICAR_MW_V2_LIBRARIES})