cmake_minimum_required(VERSION 3.0)
|
|
set (Target "bhome_msg")
|
project(${Target})
|
|
#设置输出路径
|
SET(MESSAGE_DIR ${CMAKE_BINARY_DIR}/proto)
|
# SET(MESSAGE_DIR ${PROJECT_SOURCE_DIR})
|
|
# set(GO_MESSAGE_DIR ${CMAKE_SOURCE_DIR}/../go)
|
# if(EXISTS "${GO_MESSAGE_DIR}" AND IS_DIRECTORY "${GO_MESSAGE_DIR}")
|
# else()
|
# file(MAKE_DIRECTORY ${GO_MESSAGE_DIR})
|
# endif()
|
|
#获取需要编译的proto文件
|
file(GLOB proto_files ../source/*.proto)
|
|
set(MESSAGE_SRC "")
|
set(MESSAGE_HDRS "")
|
|
set(PROTO_PATH ${PROJECT_SOURCE_DIR}/../../protobuf)
|
|
if(${ARCH} MATCHES "aarch64")
|
set(PROTO_PATH ${PROJECT_SOURCE_DIR}/../../protobuf-aarch)
|
endif()
|
|
foreach(file ${proto_files})
|
message(${file})
|
|
get_filename_component(FIL_WE ${file} 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")
|
|
# 使用自定义命令
|
add_custom_command(
|
OUTPUT "${MESSAGE_DIR}/${FIL_WE}.pb.h" "${MESSAGE_DIR}/${FIL_WE}.pb.cc"
|
COMMAND ${PROTO_PATH}/bin/protoc --cpp_out=${MESSAGE_DIR} -I=${PROJECT_SOURCE_DIR}/../source ${file}
|
DEPENDS ${file}
|
COMMENT "Generate protobuf files"
|
)
|
|
# add_custom_command(
|
# OUTPUT "${MESSAGE_DIR}/${FIL_WE}.pb.go"
|
# COMMAND ${PROTO_PATH}/bin/protoc --go_out=${GO_MESSAGE_DIR} -I=${MESSAGE_DIR}/../source ${file}
|
# DEPENDS ${file}
|
# COMMENT "Generate protobuf files"
|
# )
|
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(${PROTO_PATH}/include ${MESSAGE_DIR})
|
|
add_compile_options("-std=c++11")
|
add_library(${Target} STATIC ${MESSAGE_SRC})
|
target_link_libraries(${Target} ${PROTO_PATH}/lib/libprotobuf.a)
|