【问题标题】:Linking Facebook Proxygen with Cmake将 Facebook Proxygen 与 Cmake 链接
【发布时间】:2020-07-17 04:13:22
【问题描述】:

Facebook 的 wangle 库可以用 cmake 设置如下:

set_and_check(WANGLE_INCLUDE_DIR /usr/local/include/wangle)
set_and_check(WANGLE_CMAKE_DIR /usr/local/lib/cmake/wangle)

if (NOT TARGET wangle::wangle)
    include("${WANGLE_CMAKE_DIR}/wangle-targets.cmake")
endif()

set(WANGLE_LIBRARIES wangle::wangle)

if (NOT wangle_FIND_QUIETLY)
    message(STATUS "Found wangle: ${PACKAGE_PREFIX_DIR}")
endif()

但是,proxygen 的 install.sh 并不像 wangle 和其他 fb 库那样将 include 和 lib 文件放在 /usr/local 中。

通过 cmake 设置包含和链接到 proxygen 的正确方法是什么?

【问题讨论】:

  • 您显示的文件是wangle-config.cmake 配置脚本,它是生成(来自wangle/cmake/wangle-config.cmake.in),用于特定包安装。其他安装应带有自己的wangle-config.cmake 脚本。要使用其他安装,您需要告诉 CMake 使用相应的脚本。你可以这样做,例如通过将-Dwangle_DIR=<dir-with-config-script> 参数传递给cmake
  • 最新版本的proxygen在/usr/local/lib/cmake中安装proxygen-config.cmake,你可以在你的CMakeLists.txt中使用它。
  • 你如何在我的 CMakeLists.txt @AliShirvani 中使用它

标签: c++ facebook cmake proxygen


【解决方案1】:

根据proxygen README,如果您需要HTTP/3协议,您应该安装所有要求,包括follywanglefmtfizzmvfst。使用README 中的说明安装proxygen 后,您可以在您的CMake 项目中使用它。以下是CMakeLists.txt 的示例,您可以在this repo 中找到完整的示例项目。

cmake_minimum_required(VERSION 3.10)

project(3hat)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

find_package(proxygen REQUIRED)
find_package(gflags REQUIRED)
  
add_subdirectory(server)

【讨论】:

  • 永远不要在您的 CMakeLists.txt 文件中设置绝对路径,也不要在那里覆盖 CMAKE_MODULE_PATH。但是,您可以追加
  • 你能举个例子说明应该如何正确完成@AlexReinking吗?也可以在不安装的情况下链接到proxygen吗?
  • @AlexReinking 感谢您的评论。我刚刚更新了 sn-p。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-22
  • 2017-11-27
  • 2021-08-21
相关资源
最近更新 更多