c++ - Cmake:在自定义目录中找到 protobuf 包
问题描述
我有 cmake 3.10.x 并下载了当前的 protobuf 源 3.6.1。使用 cmake 我创建了这个库成功构建的 bin 目录“{PROTOBUF_SOURCE_DIR}/bin”。作为下一步,我想在我的基于 cmake 的项目中使用这个自定义树。我有
set ( Protobuf_USE_STATIC_LIBS ON )
find_package( Protobuf REQUIRED )
if ( Protobuf_FOUND )
message( STATUS "Protobuf version : ${Protobuf_VERSION}" )
message( STATUS "Protobuf include path : ${Protobuf_INCLUDE_DIRS}" )
message( STATUS "Protobuf libraries : ${Protobuf_LIBRARIES}" )
else()
message( WARNING "Protobuf package not found -> specify search path via PROTOBUF_ROOT variable")
endif()
但是如何为 cmake 指定我的自定义目录树以找到必要的东西。
如果我使用find_package( Protobuf REQUIRED PATHS ${PROTOBUF_ROOT}/bin/lib/cmake/protobuf )
,那么我会看到 cmake 的以下输出:
Protobuf version : 3.6.1
Protobuf include path :
Protobuf libraries :
如何让 cmake 找到包含路径、库和 protoc 编译器?
解决方案
最后我有一个解决方案 - 也许它会为其他人节省很多时间
set ( Protobuf_USE_STATIC_LIBS ON )
include(${PROTOBUF_ROOT}/bin/lib/cmake/protobuf/protobuf-config.cmake)
include(${PROTOBUF_ROOT}/bin/lib/cmake/protobuf/protobuf-module.cmake)
include(${PROTOBUF_ROOT}/bin/lib/cmake/protobuf/protobuf-options.cmake)
include(${PROTOBUF_ROOT}/bin/lib/cmake/protobuf/protobuf-targets.cmake)
find_package( Protobuf REQUIRED HINTS ${PROTOBUF_ROOT}/bin/lib/cmake/protobuf )
if ( Protobuf_FOUND )
message( STATUS "Protobuf version : ${Protobuf_VERSION}" )
message( STATUS "Protobuf include path : ${Protobuf_INCLUDE_DIRS}" )
message( STATUS "Protobuf libraries : ${Protobuf_LIBRARIES}" )
message( STATUS "Protobuf compiler libraries : ${Protobuf_PROTOC_LIBRARIES}")
message( STATUS "Protobuf lite libraries : ${Protobuf_LITE_LIBRARIES}")
else()
message( WARNING "Protobuf package not found -> specify search path via PROTOBUF_ROOT variable")
endif()
推荐阅读
- html - 使用html从外部源更改按钮的颜色?
- anychart - Anychart 缩放非地图图表类型
- javascript - 使用 React JavaScript 的 Spring-Boot
- android - onActivityResult 返回空数据
- python - Python绘图字典
- python - 一次访问多个索引行时有效地迭代 pandas.DataFrame
- javascript - 从 JsonConvert.SerializeObject(obj) 返回的 JSON 在 Json.parse 中返回“Unexpected token &”
- unity3d - GPGS Unity 插件 - 网络延迟检查和同步
- javascript - 为什么具有相同属性的两个对象不能以相同的方式工作
- wordpress - FacetWP 显示所有选项和方面