如何在CMake中把*nix风格的路径转换成Windows风格的路径?

问题描述 投票:1回答:1

我正在开发一个基于GLib和OpenBLAS的C语言程序,我希望它能在Windows和linux平台上运行,所以我选择了CMake来配置这个项目。我希望它能在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}")
#...

在MSYS2MinGW64上运行时,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的路径。但是msys可能安装在不同的地方,我不知道如何在cmake中找到msys的路径。

先谢谢你的帮助。

P.S. FindBLAS给出了同样的输出。

windows cmake mingw msys2 pkg-config
1个回答
0
投票

如果你在msys2中安装了Openblas和Glib,那么你可以比较一下pkg-config文件openblas.pc和glib-2.0.pc。现在你会发现它们之间的区别。换句话说,请在 openblas.pc 中加入前缀=mingw64。

© www.soinside.com 2019 - 2024. All rights reserved.