Gradle 并且 Cmake 无法找到肯定存在的 cpp 文件

Gradle and Cmake failing to find cpp file that is definitely there

我 运行 gradle 构建了一个 android .aar,它报告找不到文件,但文件确实存在。

$ ./gradlew.bat assembleRelease

> Task :webrtc-native:externalNativeBuildRelease FAILED
Build mrwebrtc arm64-v8a
ninja: error: 'C:/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop/data_channel_interop.cpp', needed by 'CMakeFiles/mrwebrtc.dir/C_/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop/data_channel_interop.cpp.o', missing and no known rule to make it

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':webrtc-native:externalNativeBuildRelease'.
> Build command failed.
  Error while executing process C:\Users\User\AppData\Local\Android\Sdk\cmake.10.2.4988404\bin\cmake.exe with arguments {--build C:\Developer\Microsoft-MRWebRTC\tools\build\android\webrtc-native\.externalNativeBuild\cmake\release\arm64-v8a --target mrwebrtc}
  ninja: error: 'C:/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop/data_channel_interop.cpp', needed by 'CMakeFiles/mrwebrtc.dir/C_/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop/data_channel_interop.cpp.o', missing and no known rule to make it

但是文件 C:/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop/data_channel_interop.cpp 确实存在。

$ cd C:/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop/

User MSYS /c/Developer/Microsoft-MRWebRTC/libs/mrwebrtc/src/interop (master)
$ ls
data_channel_interop.cpp                 global_factory.cpp  interop_api.cpp                local_video_track_interop.cpp  remote_audio_track_interop.cpp  transceiver_interop.cpp
external_video_track_source_interop.cpp  global_factory.h    local_audio_track_interop.cpp  peer_connection_interop.cpp    remote_video_track_interop.cpp

有人能帮忙吗?我有点 运行对此一无所知。

我发现这是因为我在某些目录上启用了 'caseSensitive' 标志。请注意,这是 WSL2 的一项新功能,并且存在一些您可能会在不知不觉中启用的特性。 Windows cmake 无法遍历启用此标志的目录。

在这里阅读: https://devblogs.microsoft.com/commandline/per-directory-case-sensitivity-and-wsl/