于是乎,觉得:应当同时设定Protobuf_DIR并指定CONFIG或者NO_MODULE字段,才能找到手工编译的Protobuf版本: set(Protobuf_DIR "/home/zz/soft/protobuf-3.8.0/lib/cmake/protobuf") find_package(Protobuf REQUIRED CONFIG) 发现运行后不输出任何关于Protobuf的信息;发现还需要手动开启protobuf_MODULE_COMPATIBLE。于是...
# Looks for protobuf-config.cmake file installed by Protobuf's cmake installation. option(protobuf_MODULE_COMPATIBLE TRUE) find_package(Protobuf CONFIG REQUIRED) message(STATUS "Using protobuf ${Protobuf_VERSION}") set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) set(_REFLECTION gRPC::grpc++...
通过设置protobuf_MODULE_COMPATIBLE=on指定打开Protobuf的兼容模式。 注意区分大小写 设置protobuf_MODULE_COMPATIBLE=on也有两种办法: 命令行添加 cmake生成Makefile时命令行添加-Dprotobuf_MODULE_COMPATIBLE=on,指定打开Protobuf兼容模式,类似下面的命令行: 代码语言:javascript 复制 d:\caffe>cmake-G"Visual Studio ...
{example}_PROTOS}) if(protobuf_MODULE_COMPATIBLE) #Legacy mode target_include_directories(${executable_name} PUBLIC ${PROTOBUF_INCLUDE_DIRS}) target_link_libraries(${executable_name} ${PROTOBUF_LIBRARIES}) else() target_link_libraries(${executable_name} protobuf::libprotobuf) endif() endfor...
set(protobuf_MODULE_COMPATIBLE TRUE) find_package(Protobuf CONFIG REQUIRED) message(STATUS "Using protobuf ${Protobuf_VERSION}") set(_PROTOBUF_LIBPROTOBUF protobuf::libprotobuf) set(_REFLECTION gRPC::grpc++_reflection) if(CMAKE_CROSSCOMPILING) ...
首先我们知道cmake安装目录下提供了FindProtobuf.cmake,因此find_package(Protobuf)一定是在MODULE模式下而不是CONFIG模式下被搜索到的。(题外话:现代的cmake推荐用XXXConfig.cmake也就是CONFIG模式来找依赖包,这方面OpenCV可以作为典范写的确实越来越好)。
这将直接将生成的文件添加到目标的源列表中。查看protobuf-config.cmake中的protobuf_generate函数以了解...
option(protobuf_MODULE_COMPATIBLE TRUE) find_package(Protobuf CONFIG REQUIRED) find_program(_PROTOBUF_PROTOC protoc) find_package(Boost 1.83 COMPONENTS system thread REQUIRED) find_package(absl CONFIG REQUIRED) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS ...
option(protobuf_MODULE_COMPATIBLE "CMake build-in FindProtobuf.cmake module compatible" OFF) option(protobuf_MODULE_COMPATIBLE "CMake built-in FindProtobuf.cmake module compatible" OFF) mark_as_advanced(protobuf_MODULE_COMPATIBLE) mark_as_advanced(protob...
所谓的“向后兼容”(backward compatible),就是说,当模块B升级了之后,它能够正确识别模块A发出的老版本的协议。由于老版本没有“状态”这个属性,在扩充协议时,可以考虑把“状态”属性设置成非必填的,或者给“状态”属性设置一个缺省值 所谓的“向前兼容”(forward compatible),就是说,当模块A升级了之后,模块B能够...