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,可拆分构建步骤:
- 先构建并安装APR:
cmake -S . -B build -DAPR_MINIMAL_BUILD=ON -DINSTALL_PDB=OFF -DCMAKE_INSTALL_PREFIX="../distro" cmake --build build --target install -j6
- 修改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)
- 重新执行构建:
cmake -S . -B build && cmake --build build --target install -j6
内容的提问来源于stack exchange,提问作者Kérdezősködő Indián
相关产品推荐
相关产品推荐

