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

如何在CMakeLists.txt中满足find_package()以联动构建sdbus-cpp?

解决sdbus-cpp与源码一同构建并满足find_package()的方法

要让sdbus-cpp和你的项目源码一起构建,同时兼容find_package(sdbus-c++)的调用,无需用户手动安装库,有两种可靠的CMake方案:


方案1:用FetchContent自动拉取并构建(推荐)

CMake的FetchContent模块可以自动克隆、配置并构建sdbus-cpp,无需用户手动操作子模块。在项目根目录的CMakeLists.txt中添加以下代码:

# 引入FetchContent模块
include(FetchContent)

# 声明sdbus-cpp的仓库信息,可指定具体版本标签(比如v1.4.0)
FetchContent_Declare(
  sdbus-cpp
  GIT_REPOSITORY https://github.com/Kistler-Group/sdbus-cpp.git
  GIT_TAG master # 替换为你需要的版本标签更稳定
)

# 禁用sdbus-cpp的示例和测试构建,减少编译时间
set(BUILD_EXAMPLES OFF CACHE BOOL "Build sdbus-c++ examples" FORCE)
set(BUILD_TESTS OFF CACHE BOOL "Build sdbus-c++ tests" FORCE)
# 如需静态库,取消下面一行注释
# set(BUILD_STATIC_LIBS ON CACHE BOOL "Build sdbus-c++ static library" FORCE)

# 拉取并构建sdbus-cpp
FetchContent_MakeAvailable(sdbus-cpp)

# 现在可以正常调用find_package
find_package(sdbus-c++ REQUIRED)

# 将sdbus-c++链接到你的目标
add_executable(your_app main.cpp)
target_link_libraries(your_app PRIVATE sdbus-c++::sdbus-c++)

原理:FetchContent_MakeAvailable会把sdbus-cpp的CMake配置路径自动加入到CMake的搜索路径中,而sdbus-cpp本身提供了标准的Config模式配置文件(sdbus-c++Config.cmake),所以find_package能直接找到本地构建的库。


方案2:用Git子模块手动添加

如果你偏好手动管理依赖代码,可以把sdbus-cpp作为Git子模块加入项目:

  1. 执行终端命令添加子模块:
git submodule add https://github.com/Kistler-Group/sdbus-cpp.git thirdparty/sdbus-cpp
  1. 在项目根CMakeLists.txt中添加子目录并配置:
# 配置sdbus-cpp的构建选项
set(BUILD_EXAMPLES OFF CACHE BOOL "Build sdbus-c++ examples" FORCE)
set(BUILD_TESTS OFF CACHE BOOL "Build sdbus-c++ tests" FORCE)

# 添加sdbus-cpp子目录进行构建
add_subdirectory(thirdparty/sdbus-cpp)

# 调用find_package或直接链接目标
find_package(sdbus-c++ REQUIRED)
target_link_libraries(your_app PRIVATE sdbus-c++::sdbus-c++)

为什么之前的尝试没成功?

  • 不需要手动写Find*.txt:sdbus-cpp官方已经提供了Config模式的配置文件,只要它的构建路径被CMake识别,find_package就能自动找到。
  • 无需执行install():install()是把库安装到系统全局路径用的,而本地构建的库通过FetchContent或add_subdirectory已经被项目直接引用,不需要安装步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:07:23