Debian Buster编译CMake 3.24测试大量失败,咨询解决办法
Debian Buster编译CMake 3.24大量测试失败的排查建议
1. 大量测试失败绝非正常情况
CMake的测试套件覆盖核心功能,这么多基础用例(比如add_executable、find_package、基础语法测试)失败,说明编译环境存在根本性问题,不是文档依赖缺失能导致的。你提到的两个缺失依赖只影响文档生成,确实和测试无关。
2. 优先排查关键依赖与配置
(1)检查编译依赖是否完整
Debian打包CMake需要的核心依赖远不止文档相关,确保安装了以下组件:
build-essential(gcc、g++、make等基础编译工具)libssl-dev(CMake部分功能依赖SSL支持)libcurl4-openssl-dev(处理ExternalData等测试的网络相关功能)qtbase5-dev(AutogenQt5测试依赖Qt5)libboost-all-dev(FindBoost测试依赖)libgl1-mesa-dev(FindOpenGL测试依赖)python3-dev(部分Python相关测试依赖)libarchive-dev(CPack打包功能依赖)
可通过以下命令安装常见缺失依赖:
apt-get install build-essential libssl-dev libcurl4-openssl-dev qtbase5-dev libboost-all-dev libgl1-mesa-dev python3-dev libarchive-dev
(2)使用Debian标准打包流程
从Salsa克隆的源码,建议用Debian官方打包工具构建,它会自动处理适配Debian的配置和依赖:
dpkg-buildpackage -us -uc -b
如果手动编译,需确保配置参数适配Debian环境:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DCPACK_DEBIAN_PACKAGE_SHLIBDEPS=ON ..
(3)避免新旧CMake版本冲突
测试时可能调用了系统旧版本的CMake,导致功能冲突。需确保编译后的CMake二进制在PATH最前端:
export PATH=$(pwd)/bin:$PATH
3. 关于Policy测试失败的说明
像CMP0139这类Policy测试失败,本质是环境不满足Policy的运行要求,而非需要手动启用Policy。比如CMP0139涉及Python模块查找,依赖完整的Python开发环境,解决核心依赖问题后这类测试通常会自动通过。
4. 是否跳过测试?
如果只是临时使用,且确认核心功能正常,可通过编译时添加-DBUILD_TESTING=OFF跳过测试。但如果是打包分发或长期使用,必须解决测试失败问题,否则可能出现未知的功能故障。
内容的提问来源于stack exchange,提问作者Deyaa
相关产品推荐
相关产品推荐

