CLion 使用SSH远程连接Linux(WSL)基于CMake开发Android-NDK程序(2021/7)

所需资料

cmake:

ndk-r21e

Clion

具体步骤

 /mnt/f/project/linux/ndk/android-ndk-r21e/prebuilt/linux-x86_64/bin/make

/mnt/f/project/linux/ndk/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/bin/clang

/mnt/f/project/linux/ndk/android-ndk-r21e/toolchains/llvm/prebuilt/linux-x86_64/bin/clang++

Debugger选项不用管,随便设的,暂时用不到

 Cmake options

-DCMAKE_SYSTEM_NAME=Android
-DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
-DCMAKE_ANDROID_NDK=/mnt/f/project/linux/ndk/android-ndk-r21e
-DCMAKE_SYSTEM_VERSION=16
-DCMAKE_C_FLAGS=""
-DCMAKE_CXX_FLAGS=""
-DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang

项目结构

CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)

add_library(demo002 SHARED
        main.c)

# Include libraries needed for hello-jni lib
target_link_libraries(demo002
        android
        log)

 main.c

int add(int a,int b){
    return a+b;
}
int main() {
    return add(1,2);
}

 构建输出

参考

https://www.jianshu.com/p/8cd60997aca2

https://www.codenong.com/cs107055727/

https://github.com/android/ndk-samples

https://developer.android.com/ndk/downloads?hl=zh_cn

<think>好的,我现在需要帮助用户解决他们在使用CMake构建项目时遇到的“Error: could not load cache”的问题。首先,我要理解用户的具体情况。用户提供的命令是尝试通过CLion中的CMake来构建目标shixuehezi.elf,但出现了无法加载缓存的错误。退出代码之前是127,现在又出现这个新问题。 首先,我应该回忆一下CMake的工作原理。CMake在构建过程中会生成一个CMakeCache.txt文件,这个文件保存了配置过程中的各种变量和设置。如果这个文件损坏或者配置过程中出现问题,就可能导致无法加载缓存的错误。 接下来,我需要考虑可能的原因。常见的原因可能包括: 1. CMakeCache.txt文件损坏或缺失。 2. CMakeLists.txt中存在语法错误或配置错误。 3. 构建目录的权限问题,导致无法读取或写入缓存文件。 4. 系统环境问题,比如磁盘空间不足或路径问题。 用户之前遇到的127错误可能和可执行文件权限或生成有关,现在的问题可能是在重新构建时缓存出了问题。我需要分步骤引导用户进行排查。 首先,建议用户清理构建目录,因为有时候残留的文件会导致缓存问题。删除整个cmake-build-debug目录或者使用CMake--fresh选项(如果版本支持)可以强制重新生成缓存。但用户可能使用的是较旧版本的CMake,所以直接删除目录更稳妥。 然后,检查CMakeLists.txt是否存在语法错误。用户可能在修改CMake配置后没有正确生成缓存,比如缺少必要的命令或变量设置错误。建议用户运行cmake ..命令查看详细输出,这样可以捕获具体的错误信息。 另外,权限问题也不能忽视。构建目录可能没有写入权限,特别是如果用户之前以其他权限运行过构建命令的话。需要检查目录权限,并确保用户有足够的权限写入。 还有可能是路径问题,比如路径中包含特殊字符或空格,但根据用户提供的路径,似乎没有这种情况。不过,还是需要确认路径是否正确,尤其是用户是否在正确的目录下执行命令。 另外,CLionCMake版本是否兼容项目配置也是一个因素。用户可能在项目中使用了新版本的CMake特性,但CLion自带的CMake版本较旧,导致缓存生成失败。建议用户检查CMake版本,并考虑升级或调整项目配置。 最后,磁盘空间不足也可能导致无法写入缓存文件,但这种情况相对少见,可以通过检查磁盘空间来排除。 总结下来,我需要将上述可能的原因和解决方案以清晰的步骤呈现给用户,帮助他们逐步排查问题。同时,需要保持语言简洁,避免技术术语过于复杂,确保用户能够理解并执行建议的操作。</think>根据你提供的CMake构建错误`Error: could not load cache`,以下是系统性排查和解决方案: --- ### **错误原因分析** 此错误通常由以下原因引起: 1. **CMake缓存文件损坏**:构建目录下的`CMakeCache.txt`被破坏或配置冲突 2. **CMakeLists.txt语法错误**:项目配置文件存在逻辑或语法问题 3. **构建目录权限异常**:无法读写缓存文件 4. **CMake版本兼容性问题**:项目配置与当前CMake版本不兼容 --- ### **分步解决方案** #### 1. **清理构建目录(首选方法)** 直接删除构建目录并重新生成: ```bash rm -rf /Users/mac/Desktop/shixuehezi_1/cmake-build-debug mkdir -p /Users/mac/Desktop/shixuehezi_1/cmake-build-debug cd /Users/mac/Desktop/shixuehezi_1/cmake-build-debug cmake .. -DCMAKE_BUILD_TYPE=Debug # 重新生成缓存 ``` #### 2. **检查CMakeLists.txt语法** 在项目根目录执行: ```bash cmake -S . -B cmake-build-debug --debug-trycompile ``` - 观察输出中是否有`Syntax Error`或`Unknown Command`提示 - **常见问题**: - 缺少`project()`定义 - 使用了未引入的CMake模块(如`find_package`失败) - 变量作用域错误(如全局/局部变量混淆) #### 3. **验证CMake版本兼容性** 检查CLion捆绑的CMake版本: ```bash /Users/mac/Applications/CLion.app/Contents/bin/cmake/mac/aarch64/bin/cmake --version ``` - 如果项目要求更高版本CMake-CLion设置中修改CMake路径(偏好设置 > 构建、执行、部署 > CMake- 或更新项目配置(`cmake_minimum_required`指令) #### 4. **检查文件系统权限** 确保构建目录可写: ```bash ls -ld /Users/mac/Desktop/shixuehezi_1/cmake-build-debug ``` - 输出权限字段应为`drwxr-xr-x`(包含`w`) - **修复权限**: ```bash chmod 755 /Users/mac/Desktop/shixuehezi_1/cmake-build-debug ``` --- ### **高级调试技巧** - **查看详细构建日志**: ```bash cmake --build cmake-build-debug --target shixuehezi.elf -- -j6 -v ``` 添加`-v`参数显示完整编译命令 - **手动生成缓存**: ```bash cd cmake-build-debug cmake .. -LA # 列出所有缓存变量 ``` --- ### **典型错误场景对照表** | 现象 | 可能原因 | 验证方法 | |------|----------|----------| | `CMake Error: Error required internal CMake variable not set` | 缓存未正确初始化 | 检查`project()`命令是否缺失 | | `Could NOT find ... (missing: ...)` | 依赖库未安装 | 执行`find_package`调试 | | `Permission denied` | 构建目录不可写 | `ls -ld`检查权限 | --- ### **补充说明** - **CLion特定问题**:如果通过IDE直接运行失败但命令行成功: 1. 进入`File > Invalidate Caches...`清理IDE缓存 2. 检查`Settings > Build, Execution, Deployment > CMake`中的生成目录配置 建议优先执行**步骤1**清理构建目录。如果问题仍未解决,请提供以下信息: - `cmake --version`输出 - CMakeLists.txt文件内容(关键部分) - 完整错误日志(从`cmake ..`开始)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jitcor

觉得有用,不赏点?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值