Android Studio编译WireGuard项目遇CMake源文件缺失错误求助
错误信息
from E:\wire\New folder\wireguard-android-master\tunnel
CMake Error at CMakeLists.txt:12 (add_executable):
Cannot find source file:wireguard-tools/src/wg-quick/android.c
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc
CMake Error at CMakeLists.txt:12 (add_executable):
No SOURCES given to target: libwg-quick.soCMake Generate step failed. Build files cannot be regenerated correctly.
问题原因
wireguard-android仓库依赖wireguard-tools子模块,直接克隆主仓库时默认不会拉取子模块,导致CMake找不到指定的源文件。
解决步骤
- 进入项目根目录,执行命令拉取所有子模块:
git submodule update --init --recursive - 清理已生成的编译缓存:
- 在Android Studio中选择
Build > Clean Project - 或手动删除项目根目录下的
.cxx和build文件夹
- 在Android Studio中选择
- 重新同步项目:点击Android Studio右上角的
Sync Project with Gradle Files,之后重新编译即可。
备选方案(子模块拉取失败时)
如果网络问题导致子模块拉取失败,可手动克隆wireguard-tools到指定路径:
git clone https://github.com/WireGuard/wireguard-tools.git E:\wire\New folder\wireguard-android-master\wireguard-tools
克隆完成后,查看主仓库.gitmodules文件中wireguard-tools对应的commit哈希,切换到该版本:
cd E:\wire\New folder\wireguard-android-master\wireguard-tools git checkout <对应commit哈希>
内容的提问来源于stack exchange,提问作者Diaz Roban

