You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows编译xoreos-tools时CMake无法找到Iconv的解决求助

编译xoreos-tools时CMake找不到Iconv的解决办法

问题描述

我在Windows 10系统上编译xoreos-tools仓库,仅添加了std::cout用于调试。使用CMake 3.29.3 x64配置时失败,报错如下:

CMake Deprecation Warning at CMakeLists.txt:20 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.

Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.

Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19043.
CMake Error at C:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Iconv (missing: Iconv_LIBRARY Iconv_INCLUDE_DIR)
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.29/Modules/FindIconv.cmake:165 (find_package_handle_standard_args)
CMakeLists.txt:266 (find_package)

Configuring incomplete, errors occurred!

我尝试安装了GnuWin32的Iconv,并通过注册表添加了环境变量:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment]
"Iconv_LIBRARY"="C:\\Program Files (x86)\\GnuWin32\\lib\\libiconv.lib"
"Iconv_INCLUDE_DIR"="C:\\Program Files (x86)\\GnuWin32\\include"

关闭并重启CMake后,问题依旧,且CMake环境中未识别到这些变量。我还尝试通过CMake环境编辑器、主窗口的「Add Entry」按钮添加变量,均无效。


解决方法

1. 命令行直接指定Iconv路径

打开命令提示符或PowerShell,进入xoreos-tools的构建目录,执行CMake配置时直接通过参数强制指定路径:

cmake -G "Visual Studio 17 2022" -A x64 ^
  -DIconv_INCLUDE_DIR="C:/Program Files (x86)/GnuWin32/include" ^
  -DIconv_LIBRARY="C:/Program Files (x86)/GnuWin32/lib/libiconv.lib" ^
  ../path/to/xoreos-tools-source

注意替换../path/to/xoreos-tools-source为你的源码目录路径,根据使用的VS版本调整-G参数(比如VS2019对应"Visual Studio 16 2019")。

2. 修改项目CMakeLists.txt强制指定路径

找到源码根目录下的CMakeLists.txt,在find_package(Iconv REQUIRED)(约第266行)之前添加以下代码:

set(Iconv_INCLUDE_DIR "C:/Program Files (x86)/GnuWin32/include")
set(Iconv_LIBRARY "C:/Program Files (x86)/GnuWin32/lib/libiconv.lib")

让CMake跳过自动查找,直接使用你指定的路径。

3. 换用MSYS2/MinGW环境编译(推荐)

Windows下编译GNU系项目,MSYS2环境的依赖适配性更好:

  • 安装MSYS2后打开MinGW x64终端
  • 安装依赖:pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake mingw-w64-x86_64-iconv
  • 常规编译步骤:
    git clone https://github.com/xoreos/xoreos-tools.git
    cd xoreos-tools
    mkdir build && cd build
    cmake .. -G "Unix Makefiles"
    make
    

4. 检查架构兼容性

你使用的是x64版本CMake,但GnuWin32的Iconv是32位(安装在Program Files (x86)),可能存在架构不匹配。若坚持用GnuWin32,可尝试找x64版本的Iconv,或切换到32位CMake重新配置。


内容的提问来源于stack exchange,提问作者Ξένη Γήινος

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 19:18:24