使用Conan在Windows下编译libvpx(MSVC)失败求助
解决Windows下Conan安装libvpx的编译器路径空格问题
问题背景
- C++项目使用Conan管理依赖,Linux环境下构建正常,Windows环境安装
libvpx/1.11.0失败 - 指定C14标准时可下载预编译包正常安装,C17及以上版本需编译源码,出现编译器路径解析错误
- 使用Conan版本1.57.0
报错根源
从config.log可明确:libvpx的configure脚本未正确处理含空格的编译器路径,将C:/Program Files/...直接拆分为/c/program,导致找不到编译器可执行文件。
解决步骤
方法1:使用Visual Studio命令提示符执行命令
打开对应版本的x64 Native Tools Command Prompt(如VS2019/2022的x64原生工具命令提示符),该环境已自动配置好编译器路径,无需手动指定CC/CXX变量:
conan install "libvpx/1.11.0@" --build missing --settings arch=x86_64 --settings build_type=Debug --settings compiler="Visual Studio" --settings compiler.version=16 --settings compiler.runtime=MDd --settings compiler.cppstd=20
若使用自定义profile,需删除profile中[env]段的CC/CXX配置,直接在命令提示符执行:
conan install "libvpx/1.11.0@" --build missing
方法2:用Windows短路径替代含空格的路径
Windows支持用短路径名替代带空格的目录,例如:
Program Files (x86)对应短路径PROGRA~2Program Files对应短路径PROGRA~1
修改profile的[env]配置为短路径:
[settings] os=Windows os_build=Windows arch=x86_64 arch_build=x86_64 compiler="Visual Studio" compiler.version=16 compiler.cppstd=20 build_type=Release [options] [build_requires] [env] CXX="C:/PROGRA~2/MICROS~1/2019/COMMUN~1/VC/Tools/MSVC/1429~1.301/bin/Hostx64/x64/cl.exe" CC="C:/PROGRA~2/MICROS~1/2019/COMMUN~1/VC/Tools/MSVC/1429~1.301/bin/Hostx64/x64/cl.exe"
或直接在命令行指定短路径环境变量:
conan install "libvpx/1.11.0@" --build missing --env CC="C:/PROGRA~2/MICROS~1/2019/COMMUN~1/VC/Tools/MSVC/1429~1.301/bin/Hostx64/x64/cl.exe" --env CXX="C:/PROGRA~2/MICROS~1/2019/COMMUN~1/VC/Tools/MSVC/1429~1.301/bin/Hostx64/x64/cl.exe" --settings arch=x86_64 --settings build_type=Debug --settings compiler="Visual Studio" --settings compiler.version=16 --settings compiler.runtime=MDd --settings compiler.cppstd=20
方法3:升级Conan版本并使用默认工具链
Conan 1.60+及2.x版本对Windows环境的路径处理更完善,可升级Conan后,删除profile中手动指定的CC/CXX配置,依赖Conan自动识别Visual Studio工具链:
[settings] os=Windows arch=x86_64 compiler="Visual Studio" compiler.version=16 compiler.cppstd=20 build_type=Release [options] [build_requires] [env] # 无需手动指定CC/CXX
在VS命令提示符中执行安装命令即可。
验证
执行安装命令后,查看build目录下的config.log,确认编译器路径被正确解析,libvpx编译安装完成。
内容的提问来源于stack exchange,提问作者mutableVoid
相关产品推荐
相关产品推荐

