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

CMake构建失败:Git子模块引入APR/APR-Util依赖遇问题

解决APR-Util构建时找不到APR的CMake配置问题

以下几种方法可解决你的问题:

方法1:直接传递APR本地构建目标信息给APR-Util

APR作为子模块构建后,CMake环境中已存在APR目标,可通过设置APR-Util所需变量,跳过它的FIND_PACKAGE流程:

cmake_minimum_required(VERSION 3.31)
project(adsp C)
set(CMAKE_C_STANDARD 11)

set(APR_MINIMAL_BUILD "ON")
set(INSTALL_PDB "OFF")
set(CMAKE_INSTALL_PREFIX "../distro")

# 构建APR
add_subdirectory(deps/apr)

# 给APR-Util传递APR的本地构建信息
set(APR_FOUND ON)
set(APR_INCLUDE_DIR ${APR_INCLUDE_DIR})
set(APR_LIBRARIES APR)
set(APR_VERSION ${APR_VERSION})

# 构建APR-Util
add_subdirectory(deps/apr-util)

方法2:让APR在构建目录生成配置文件,指定APR_DIR为APR构建目录

默认APR仅在install阶段生成APRConfig.cmake,可配置APR在构建过程中就生成配置文件,再引导APR-Util查找:

cmake_minimum_required(VERSION 3.31)
project(adsp C)
set(CMAKE_C_STANDARD 11)

set(APR_MINIMAL_BUILD "ON")
set(INSTALL_PDB "OFF")
set(CMAKE_INSTALL_PREFIX "../distro")

# 配置APR将CMake配置文件输出到构建目录
set(APR_INSTALL_CMAKE_CONFIG_DIR "${CMAKE_CURRENT_BINARY_DIR}/deps/apr/lib/cmake/apr" CACHE PATH "APR CMake config output dir")
add_subdirectory(deps/apr)

# 指定APR_DIR为APR构建目录下的cmake文件夹
set(APR_DIR "${CMAKE_CURRENT_BINARY_DIR}/deps/apr/lib/cmake/apr" CACHE PATH "Path to APR CMake config")

# 构建APR-Util
add_subdirectory(deps/apr-util)

方法3:分阶段构建,先安装APR再构建APR-Util

如果依赖已安装的APR,可拆分构建步骤:

  1. 先构建并安装APR:
cmake -S . -B build -DAPR_MINIMAL_BUILD=ON -DINSTALL_PDB=OFF -DCMAKE_INSTALL_PREFIX="../distro"
cmake --build build --target install -j6
  1. 修改CMakeLists.txt,指定APR安装目录作为查找前缀:
cmake_minimum_required(VERSION 3.31)
project(adsp C)
set(CMAKE_C_STANDARD 11)

set(CMAKE_INSTALL_PREFIX "../distro")
set(CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/distro" CACHE PATH "Package lookup prefix")

add_subdirectory(deps/apr-util)
  1. 重新执行构建:
cmake -S . -B build && cmake --build build --target install -j6

内容的提问来源于stack exchange,提问作者Kérdezősködő Indián

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:25:59