0

我在 Windows 10 上使用 CMake 3.4.1 和 MSYS2(截至 2015 年 12 月 25 日的所有内容都是最新的)。

当我使用 CMake 的find_file命令时,除非路径是 Windows 样式,否则它将不起作用。这对我来说是个问题,因为我正在尝试使用findwxWidgets.cmake,因此失败了。

例如:

CMakeLists.txt:

cmake_minimum_required(VERSION 3.0)
find_file(version_h version.h PATHS /mingw64/include/wx-3.0/wx)
message(STATUS "version_h: ${version_h}")

跑步cmake吐出:

-- version_h: version_h-NOTFOUND

但它显然在那里:

>>> file /mingw64/include/wx-3.0/wx/version.h
/mingw64/include/wx-3.0/wx/version.h: C source, ASCII text

我想知道这是否是一个错误,或者我必须设置一些晦涩的标志才能使其正常工作。如何让 CMakefind_file查找具有 UNIX 样式路径的文件?

4

1 回答 1

1

MinGW-w64 cmake 无法理解 MSYS2 路径。您可能会向 CMake 开发人员提出一个路径转换测试程序,但这相当粗略,我希望他们会拒绝。相反,这些事情必须逐案解决。wx-config 是一个 shell 脚本,它提供了一个 MSYS2 路径。

这是当前发布的 MSYS2 wxWidgets 包中的一个错误,将在下一个版本中修复。要解决此问题,请在 /mingw64/bin/wx-config 或 /mingw32/bin/wx-config 中找到该行:

prefix=${input_option_prefix-${this_prefix:-/mingw64}}

(或 /mingw32 当然)并在其后添加:

if [ "x${MSYSTEM}" = "xMINGW32" ] || [ "x${MSYSTEM}" = "xMINGW64" ]; then
    prefix=$(cygpath -m ${prefix})
fi

不过请注意在升级时将其删除。

于 2015-12-25T21:38:43.123 回答