You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

73 lines
2.8 KiB

# 写到了cmake默认查找地点/usr/share/cmake-3.16/Modules
# Locate and configure the Google Protocol Buffers library
#
# Adds the following targets:
#
# protobuf::libprotobuf - Protobuf library
# protobuf::libprotobuf-lite - Protobuf lite library
# protobuf::libprotoc - Protobuf Protoc Library
# protobuf::protoc - protoc executable
#
#
# Generates C++ sources from the .proto files
#
# protobuf_generate_cpp (<SRCS> <HDRS> <DEST> [<ARGN>...])
#
# SRCS - variable to define with autogenerated source files
# HDRS - variable to define with autogenerated header files
# DEST - directory where the source files will be created
# ARGN - .proto files
#
if(NOT DEFINED PROTOBUF_ROOT)
message(FATAL_ERROR "PROTOBUF_ROOT not set in FindgRPC.cmake")
else()
find_path(PROTOBUF_INCLUDE_DIR google/protobuf/service.h ${PROTOBUF_ROOT}/include)
mark_as_advanced(PROTOBUF_INCLUDE_DIR)
message("${BoldGreen}Find_package protobuf: PROTOBUF_INCLUDE_DIR is ${PROTOBUF_INCLUDE_DIR}${ColourReset}")
set(PROTOBUF_BINARY_DIR ${PROTOBUF_ROOT}/bin)
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${PROTOBUF_ROOT}/lib)
endif ()
# The Protobuf library
find_library(PROTOBUF_LIBRARY NAMES protobuf)
mark_as_advanced(PROTOBUF_LIBRARY)
add_library(protobuf::libprotobuf UNKNOWN IMPORTED)
set_target_properties(protobuf::libprotobuf PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${PROTOBUF_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES pthread
IMPORTED_LOCATION ${PROTOBUF_LIBRARY}
)
# The Protobuf lite library
find_library(PROTOBUF_LITE_LIBRARY NAMES protobuf-lite)
mark_as_advanced(PROTOBUF_LITE_LIBRARY)
add_library(protobuf::libprotobuf-lite UNKNOWN IMPORTED)
set_target_properties(protobuf::libprotobuf-lite PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${PROTOBUF_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES pthread
IMPORTED_LOCATION ${PROTOBUF_LITE_LIBRARY}
)
# The Protobuf Protoc Library
find_library(PROTOBUF_PROTOC_LIBRARY NAMES protoc)
mark_as_advanced(PROTOBUF_PROTOC_LIBRARY)
add_library(protobuf::libprotoc UNKNOWN IMPORTED)
set_target_properties(protobuf::libprotoc PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${PROTOBUF_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES protobuf::libprotobuf
IMPORTED_LOCATION ${PROTOBUF_PROTOC_LIBRARY}
)
# Find the protoc Executable
find_program(PROTOBUF_PROTOC_EXECUTABLE protoc ${PROTOBUF_BINARY_DIR})
mark_as_advanced(PROTOBUF_PROTOC_EXECUTABLE)
message("${BoldGreen}PROTOBUF_PROTOC_EXECUTABLE is ${PROTOBUF_PROTOC_EXECUTABLE}${ColourReset}")
add_executable(protobuf::protoc IMPORTED)
set_target_properties(protobuf::protoc PROPERTIES
IMPORTED_LOCATION ${PROTOBUF_PROTOC_EXECUTABLE}
)
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf DEFAULT_MSG
PROTOBUF_LIBRARY PROTOBUF_INCLUDE_DIR PROTOBUF_PROTOC_EXECUTABLE)