如何在 CMake 中将 *nix 样式路径转换为 Windows 样式路径?
How can I convert *nix style paths into Windows style paths in CMake?
我正在开发一个基于 GLib 和 OpenBLAS 的 C 程序。我希望它在 Windows 和 linux 平台上都是 运行,所以我选择了 CMake 来配置项目。这是我的 CMakeLists.txt:
# ...
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLib REQUIRED glib-2.0)
message(STATUS "GLib Found:")
message(STATUS " GLib include directories: ${GLib_INCLUDE_DIRS}")
message(STATUS " GLib library directories: ${GLib_LIBRARY_DIRS}")
message(STATUS " GLib libraries: ${GLib_LIBRARIES}")
pkg_check_modules(BLAS REQUIRED openblas)
message(STATUS "OpenBLAS Found:")
message(STATUS " BLAS include directories: ${BLAS_INCLUDE_DIRS}")
message(STATUS " BLAS library directories: ${BLAS_LIBRARY_DIRS}")
message(STATUS " BLAS libraries: ${BLAS_LIBRARIES}")
#...
运行 在 MSYS2/MinGW64 上,cmake 给出:
-- GLib Found:
-- GLib include directories: X:/path/to/msys64/mingw64/include/glib-2.0;X:/path/to/msys64/mingw64/lib/glib-2.0/include;X:/path/to/msys64/mingw64/include
-- GLib library directories: X:/path/to/msys64/mingw64/lib
-- GLib libraries: glib-2.0;intl
-- OpenBLAS Found:
-- BLAS include directories: /mingw64/include/OpenBLAS
-- BLAS library directories:
-- BLAS libraries: openblas
pkg-config 似乎在 openblas 上使用 *nix 路径导致包含失败。
添加 X:/path/to/msys64
作为前缀应该可以。但是msys可以安装在不同的地方,我不知道如何在cmake中找到msys路径。
提前感谢您的帮助。
P.S。 FindBLAS 给出相同的输出。
如果你在msys2中安装了Openblas和Glib,那么你可以比较pkg-config文件openblas.pc和glib-2.0.pc。现在你会弄清楚它们之间的区别。换句话说,请在 openblas.pc.
中添加 prefix=/mingw64
我正在开发一个基于 GLib 和 OpenBLAS 的 C 程序。我希望它在 Windows 和 linux 平台上都是 运行,所以我选择了 CMake 来配置项目。这是我的 CMakeLists.txt:
# ...
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLib REQUIRED glib-2.0)
message(STATUS "GLib Found:")
message(STATUS " GLib include directories: ${GLib_INCLUDE_DIRS}")
message(STATUS " GLib library directories: ${GLib_LIBRARY_DIRS}")
message(STATUS " GLib libraries: ${GLib_LIBRARIES}")
pkg_check_modules(BLAS REQUIRED openblas)
message(STATUS "OpenBLAS Found:")
message(STATUS " BLAS include directories: ${BLAS_INCLUDE_DIRS}")
message(STATUS " BLAS library directories: ${BLAS_LIBRARY_DIRS}")
message(STATUS " BLAS libraries: ${BLAS_LIBRARIES}")
#...
运行 在 MSYS2/MinGW64 上,cmake 给出:
-- GLib Found:
-- GLib include directories: X:/path/to/msys64/mingw64/include/glib-2.0;X:/path/to/msys64/mingw64/lib/glib-2.0/include;X:/path/to/msys64/mingw64/include
-- GLib library directories: X:/path/to/msys64/mingw64/lib
-- GLib libraries: glib-2.0;intl
-- OpenBLAS Found:
-- BLAS include directories: /mingw64/include/OpenBLAS
-- BLAS library directories:
-- BLAS libraries: openblas
pkg-config 似乎在 openblas 上使用 *nix 路径导致包含失败。
添加 X:/path/to/msys64
作为前缀应该可以。但是msys可以安装在不同的地方,我不知道如何在cmake中找到msys路径。
提前感谢您的帮助。
P.S。 FindBLAS 给出相同的输出。
如果你在msys2中安装了Openblas和Glib,那么你可以比较pkg-config文件openblas.pc和glib-2.0.pc。现在你会弄清楚它们之间的区别。换句话说,请在 openblas.pc.
中添加 prefix=/mingw64