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)