一、最简单:源码放在工程里
把 TwoBufQueue 放到应用的 external/TwoBufQueue 目录,在应用的 CMakeLists.txt 中加入:
CMake
cmake_minimum_required(VERSION 3.20)
project(my_app LANGUAGES CXX)
add_subdirectory(external/TwoBufQueue)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE TwoBufQueue::TwoBufQueue)main.cpp 使用接口指南中的完整例子即可。被其他工程引用时,库的测试和示例默认不构建;编译标准和线程链接由 target 自动传给应用。应用自己的 target 不要命名为 TwoBufQueue。
二、已安装:使用 find_package
先在库目录构建并安装到一个有写权限的位置:
Shell
cmake -S . -B build-package -DCMAKE_BUILD_TYPE=Release -DBRQ_BUILD_TESTS=OFF -DBRQ_BUILD_EXAMPLES=OFF
cmake --build build-package --config Release --parallel
cmake --install build-package --config Release --prefix ./install应用的 CMakeLists.txt:
CMake
cmake_minimum_required(VERSION 3.20)
project(my_app LANGUAGES CXX)
find_package(TwoBufQueue 0.6 CONFIG REQUIRED)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE TwoBufQueue::TwoBufQueue)配置应用时,用 -DCMAKE_PREFIX_PATH=/安装目录的绝对路径 告诉 CMake 包在哪里。整个安装目录可以移动,之后更新这个路径即可;已经编译的库仍须匹配操作系统、CPU 架构和工具链。
三、使用 FetchContent 管理源码
本地源码也可以这样接入,不需要网络:
CMake
include(FetchContent)
FetchContent_Declare(TwoBufQueue
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external/TwoBufQueue")
FetchContent_MakeAvailable(TwoBufQueue)
target_link_libraries(my_app PRIVATE TwoBufQueue::TwoBufQueue)此处假定应用 target my_app 已创建。远程仓库发布后,可换成实际 GIT_REPOSITORY 和固定提交号 GIT_TAG;不要用不断变化的分支代替可复现版本。远程写法及接入自测见完整接入说明。
四、常见问题
| 遇到的问题 | 检查什么 |
|---|---|
| 找不到头文件 | 包含公共头文件,并链接上述 target;不要手动引用开发机器的路径 |
| find_package 找不到包 | CMAKE_PREFIX_PATH 是否指向完整安装目录 |
| macOS 编译接口不可用 | 系统与 SDK 是否支持 14.4+;必要时配置 CMAKE_OSX_DEPLOYMENT_TARGET=14.4 |
| 不想构建库的测试或示例 | 设置 BRQ_BUILD_TESTS=OFF、BRQ_BUILD_EXAMPLES=OFF |