Windows编译kMyMoney源码遇vcpkg跨平台路径兼容问题求助
Windows下构建kMyMoney时CMake+vcpkg路径错误问题
问题场景
在Windows系统中从源码构建kMyMoney,遵循官方构建环境指南操作,执行CMake命令时出现文件未找到错误,错误信息如下:
C:\Users\drfri\kMyMoney>cmake -B Build -S . -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_TOOLCHAIN_FILE=c:/Users/drfri/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG-MANIFEST-ROOT=c:/Users/drfri/kMyMoney -- Running vcpkg install Failed to load manifest from directory C:\cygdrive\c\Users\drfri\kMyMoney no such file or directory note: updating vcpkg by rerunning bootstrap-vcpkg may resolve this failure. -- Running vcpkg install - failed CMake Error at c:/Users/drfri/vcpkg/scripts/buildsystems/vcpkg.cmake:892 (message): vcpkg install failed. See logs for more information: /cygdrive/c/Users/drfri/kMyMoney/Build/vcpkg-manifest-install.log Call Stack (most recent call first): Build/CMakeFiles/3.23.2/CMakeSystem.cmake:6 (include) CMakeLists.txt:14 (project) -- Configuring incomplete, errors occurred! See also "/cygdrive/c/Users/drfri/kMyMoney/Build/CMakeFiles/CMakeOutput.log". See also "/cygdrive/c/Users/drfri/kMyMoney/Build/CMakeFiles/CMakeError.log".
注意到错误中出现了Linux风格的/cygdrive/c/路径,现寻求以下问题的解决办法:
- 是否遗漏了某个CMake参数?
- 当前使用的vcpkg版本(2023-04-07)是否适配?
- CMake版本为3.26.3-Windows,vcpkg.json位于
c:\Users\drfri\kMyMoney目录下,相关配置文件中无cygdrive相关引用,且日志未提供更多有效信息,该如何解决此问题?
解决方案
1. CMake参数问题修正
- 移除
CMAKE_INSTALL_PREFIX=/usr:该路径是类Unix系统的安装目录,Windows下需改为Windows风格路径(如"C:\Program Files\kMyMoney"),或留空使用默认路径。 - 修正参数名:
VCPKG-MANIFEST-ROOT应为VCPKG_MANIFEST_ROOT(使用下划线而非连字符),这是触发路径解析异常的关键原因之一。
修正后的CMake命令示例:
cmake -B Build -S . -DCMAKE_INSTALL_PREFIX="C:\Program Files\kMyMoney" -DCMAKE_TOOLCHAIN_FILE=c:/Users/drfri/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DVCPKG_MANIFEST_ROOT=c:/Users/drfri/kMyMoney
2. vcpkg版本适配性处理
2023-04-07版本的vcpkg与CMake 3.26.3理论上兼容,但建议更新vcpkg以修复潜在路径解析bug:
- 进入vcpkg安装目录,执行
bootstrap-vcpkg.bat重新编译更新vcpkg。
3. cygdrive路径异常解决
出现/cygdrive/c/路径的核心原因及解决步骤:
- 路径格式异常源于你可能在Cygwin/MSYS2终端中执行命令,这类环境会自动将Windows路径转换为Cygwin风格,导致vcpkg无法识别。需切换到原生Windows CMD或PowerShell中执行CMake命令。
- 确保所有路径使用Windows风格(
c:/xxx或C:\xxx),不要混用类Unix路径格式。 - 删除Build目录下的所有缓存文件,清理后重新执行修正后的CMake命令。
内容的提问来源于stack exchange,提问作者DRF
相关产品推荐
相关产品推荐

