cmake_minimum_required(VERSION 3.0)
|
|
set (Target "bhome_msg")
|
project(${Target})
|
|
#设置输出路径
|
SET(MESSAGE_DIR ${CMAKE_SOURCE_DIR}/proto)
|
if(EXISTS "${CMAKE_SOURCE_DIR}/proto" AND IS_DIRECTORY "${CMAKE_SOURCE_DIR}/proto")
|
SET(PROTO_META_BASE_DIR ${MESSAGE_DIR})
|
else()
|
file(MAKE_DIRECTORY ${MESSAGE_DIR})
|
SET(PROTO_META_BASE_DIR ${MESSAGE_DIR})
|
endif()
|
|
|
#获取需要编译的proto文件
|
set(MSG_PROTOS
|
bhome_msg.proto
|
bhome_msg_api.proto
|
error_msg.proto
|
)
|
|
set(MESSAGE_SRC "")
|
set(MESSAGE_HDRS "")
|
|
foreach(msg ${MSG_PROTOS})
|
message(${msg})
|
|
get_filename_component(FIL_WE ${msg} NAME_WE)
|
message(${FIL_WE})
|
|
list(APPEND MESSAGE_SRC "${MESSAGE_DIR}/${FIL_WE}.pb.cc")
|
list(APPEND MESSAGE_HDRS "${MESSAGE_DIR}/${FIL_WE}.pb.h")
|
|
# 使用自定义命令
|
execute_process(
|
COMMAND ${CMAKE_SOURCE_DIR}/protobuf/protoc --cpp_out=${MESSAGE_DIR} --proto_path=${CMAKE_SOURCE_DIR}/proto/source ${msg}
|
)
|
|
endforeach()
|
|
# 设置文件属性为 GENERATED
|
set_source_files_properties(${MESSAGE_SRC} ${MESSAGE_HDRS} PROPERTIES GENERATED TRUE)
|
|
# 添加自定义target
|
add_custom_target(generate_message ALL
|
DEPENDS ${MESSAGE_SRC} ${MESSAGE_HDRS}
|
COMMENT "generate message target"
|
VERBATIM
|
)
|
|
|
include_directories(${CMAKE_SOURCE_DIR}/protobuf/include)
|
|
add_library(${Target} STATIC ${MESSAGE_SRC})
|
target_link_libraries(${Target} ${CMAKE_SOURCE_DIR}/protobuf/lib/libprotobuf-lite.a)
|