You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求适配Folly示例程序的CMakeLists.txt及编译依赖库说明

适配Facebook Folly示例程序的CMake配置方案

问题背景

你编写的Folly示例代码如下:

#include <utility>
#include <iostream>
#include <folly/Format.h>
#include <folly/futures/Future.h>
#include <folly/executors/ThreadedExecutor.h>
#include <folly/Uri.h>
#include <folly/FBString.h>

static void print_uri(const folly::fbstring &address) {
  const folly::Uri uri(address);
  const auto authority = folly::format("The authority from {} is {}", uri.fbstr(), uri.authority());
  std::cout << authority << std::endl;
}

int main() {
  folly::ThreadedExecutor executor;
  folly::Promise<folly::fbstring> promise;
  folly::Future<folly::fbstring> future = promise.getSemiFuture().via(&executor);
  folly::Future<folly::Unit> unit = std::move(future).thenValue(print_uri);
  promise.setValue("https://conan.io/");
  std::move(unit).get();
  return 0;
}

你需要对应的CMake配置来处理编译依赖,下面是适配该程序的CMakeLists.txt方案:

示例CMakeLists.txt

cmake_minimum_required(VERSION 3.14)
project(folly_example)

# 设置C++标准,Folly要求至少C++17
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找已安装的Folly库
find_package(Folly REQUIRED)

# 添加可执行文件目标
add_executable(folly_example main.cpp)

# 链接Folly库及其依赖
target_link_libraries(folly_example
  PRIVATE
  Folly::folly
)

关键配置说明

  • C++标准设置:Folly依赖C++17及以上特性,因此明确指定CMAKE_CXX_STANDARD 17,并开启CMAKE_CXX_STANDARD_REQUIRED强制编译器使用该标准,避免版本兼容问题。
  • find_package(Folly REQUIRED):CMake会自动搜索系统中已安装的Folly库(无论是通过包管理器如apt/brew安装,还是源码编译安装),定位头文件和库文件路径。
  • target_link_libraries:链接Folly::folly这个CMake目标即可,它已经包含了Folly所有的依赖项(比如Boost、OpenSSL、fmt等),无需手动逐个添加。

额外注意事项

如果你的Folly是手动编译安装在非系统标准路径下,需要在运行CMake时通过-DFolly_DIR=/path/to/folly/cmake参数指定Folly的CMake配置文件所在路径,确保CMake能正确找到库。

内容的提问来源于stack exchange,提问作者MTMD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:17:16