Gradle 和 Cmake 无法找到绝对存在的 cpp 文件
Posted
技术标签:
【中文标题】Gradle 和 Cmake 无法找到绝对存在的 cpp 文件【英文标题】:Gradle and Cmake failing to find cpp file that is definitely there 【发布时间】:2020-05-21 22:39:31 【问题描述】:我运行 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\3.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
有人可以帮忙吗?我有点想不通了。
【问题讨论】:
Windows 路径(\
作为分隔符)和 Unix 路径(/
作为分隔符)看起来有些混乱。
【参考方案1】:
我发现这是因为我在某些目录上启用了“caseSensitive”标志。请注意,这是 WSL2 的一项新功能,并且您可能会在没有意识到的情况下启用一些特殊功能。 Windows cmake 无法遍历启用了此标志的目录。
在此处阅读: https://devblogs.microsoft.com/commandline/per-directory-case-sensitivity-and-wsl/
【讨论】:
以上是关于Gradle 和 Cmake 无法找到绝对存在的 cpp 文件的主要内容,如果未能解决你的问题,请参考以下文章
解决Android Studio使用CMake无法编译出32位armeabi平台so库
CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置