使用Conan2与CMake构建Qt5时Feature 'system-png'启用失败如何解决
解决Conan2 + Qt5构建时的system-png错误
问题场景
使用Conan2搭配CMake构建Qt5.15.11项目时,执行conan install . --output-folder=build --build=missing触发以下错误:
ERROR: Feature 'system-png' was enabled, but the pre-condition 'features.png && libs.libpng' failed. qt/5.15.11: ERROR: Package '020a7cd993e36db783fa98d5d067f534b330337c' build failed qt/5.15.11: WARN: Build folder C:\Users\xxx\.conan2\p\b\qt663cecdfcc715\b ERROR: qt/5.15.11: Error in build() method, line 843 self.run("%s %s" % (os.path.join(self.source_folder, "qt5", "configure"), " ".join(args))) ConanException: Error 3 while executing
从配置摘要可见,Qt尝试启用system-png但无法找到系统libpng:
PNG .................................. yes Using system libpng ................ no
环境信息:
- Python 3.10.6
- Pip 22.2.1
- MSVC 2022
- CMake 3.15
- Windows 10
- Conan 2.7.1
项目结构:
Project ├── CMakeLists.txt ├── conanfile.txt └── src └── main.cpp
原conanfile.txt内容:
[requires] qt/5.15.11 [generators] CMakeDeps CMakeToolchain [layout] cmake_layout
用户尝试过添加libpng/1.6.43到依赖列表,以及手动下载libpng二进制配置环境变量,但问题未解决。
解决方案
1. 修改conanfile.txt,强制Qt使用Conan管理的libpng
更新conanfile.txt,添加libpng依赖,并通过选项禁用Qt对系统png的检测:
[requires] qt/5.15.11 libpng/1.6.43 [generators] CMakeDeps CMakeToolchain [layout] cmake_layout [options] qt/*:system_png=False
qt/*:system_png=False:指定Qt不依赖系统libpng,转而使用Conan提供的版本。
2. 清理旧构建缓存
Conan会缓存之前的失败构建产物,需清理后重新执行:
conan cache clean qt/5.15.11 # Windows系统执行以下命令删除build目录 rmdir /s /q build # Linux/macOS系统执行 rm -rf build
3. 重新执行安装命令
conan install . --output-folder=build --build=missing
额外提示
- 无需手动下载libpng二进制或配置环境变量,Conan会自动处理依赖的下载、编译与链接。
- 当前使用的CMake 3.15版本较低,建议升级到3.20+,可提升Qt5.15与CMake的兼容性。
内容的提问来源于stack exchange,提问作者CheerThe2nd
相关产品推荐
相关产品推荐

