zhangzengfei
2022-06-07 c4bef30615743c72e8b1d96c2b74529cfd55b585
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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-lite.a)