如何让 CMake find_file 在 MSYS2 上接受 UNIX 风格的路径?
How to get CMake find_file to accept UNIX-style paths on MSYS2?
我在 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
我想知道这是否是一个错误,或者是否有一些模糊的标志我必须设置才能使其正常工作。我如何让 CMake 的 find_file
找到具有 UNIX 风格路径的文件?
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
不过在升级时要小心删除它。
我在 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
我想知道这是否是一个错误,或者是否有一些模糊的标志我必须设置才能使其正常工作。我如何让 CMake 的 find_file
找到具有 UNIX 风格路径的文件?
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
不过在升级时要小心删除它。