Cmake FILE()命令将其他路径前置到提供的文件路径

Cmake FILE()命令将其他路径前置到提供的文件路径,cmake,msys2,Cmake,Msys2,我对cmake Findxxx脚本有问题 我在win10内部的msys2外壳上尝试这个,我的源代码位于/home/adrian/dev/libosmscout 在它里面我有一个builddir,我从中调用cmake.. 在有问题的FindCairo.cmake文件中(除其他外) 其结果是: -- D:/Dev/Compiler/msys64/mingw32/include/cairo/cairo-version.h CMake Error at cmake/FindCairo.cmake:39

我对cmake Findxxx脚本有问题

我在win10内部的msys2外壳上尝试这个,我的源代码位于
/home/adrian/dev/libosmscout
在它里面我有一个
build
dir,我从中调用
cmake..

在有问题的FindCairo.cmake文件中(除其他外)

其结果是:

-- D:/Dev/Compiler/msys64/mingw32/include/cairo/cairo-version.h

CMake Error at cmake/FindCairo.cmake:39 (FILE):
  file failed to open for reading (No such file or directory):
/home/adrian/dev/libosmscout/D:/Dev/Compiler/msys64/mingw32/include/cairo/cairo-version.h
正如您可以从消息命令中看到的,CAIRO_INCLUDE_DIRS变量被正确填充,但是对FILE(READ)的调用以某种方式在我的源目录前面加了前缀

我做错了什么?他为什么要做准备


谢谢

msys可能使用unix风格的路径,即
/d/some/path
而不是
d:/some/path
,这意味着您的文件路径
d:/Dev/Compiler/msys64/mingw32/include/cairo/cairo version.h
被视为相对路径,因此它以源目录为前缀成为绝对路径。那是你写的
FindCairo.cmake
脚本吗?从技术上讲不是我写的,但它是自己写的,不是cmake的一部分。即使是像你所描述的那样,我也找不到一种方法来阻止这种行为,而且我认为这种情况一开始就不应该发生。
-- D:/Dev/Compiler/msys64/mingw32/include/cairo/cairo-version.h

CMake Error at cmake/FindCairo.cmake:39 (FILE):
  file failed to open for reading (No such file or directory):
/home/adrian/dev/libosmscout/D:/Dev/Compiler/msys64/mingw32/include/cairo/cairo-version.h