android - 适用于 android 的最小 CMake 构建
问题描述
我正在尝试将本机 C++ DLL 移植为 Android 上的共享库。对于构建,我使用的是 VSCode,而不是 Visual Studio。下载了安卓 NDK r18b。我的项目是基于 CMake 的,当我尝试使用“NMake Mmakefiles”生成器生成它时,我总是收到此错误:
CMAKE_SYSTEM_NAME is 'Android' but 'NVIDIA Nsight Tegra Visual Studio Edition' is not installed.
我创建了一个小项目来测试它。
主文件
int foo( int a, int b ) { return a + b; }
CMakeLists.txt
cmake_minimum_required( VERSION 3.11.0 )
add_library( Engine SHARED main.cpp )
我用这个命令行(CMake 3.11.4)运行它:
cmake -g "NMake Makefiles" .. -DCMAKE_TOOLCHAIN_FILE=%NDK_ROOT%\build\cmake\android.toolchain.cmake -DANDROID_NDK=%NDK_ROOT%
有了这个,我仍然得到错误:
CMake Error in CMakeLists.txt:
CMAKE_SYSTEM_NAME is 'Android' but 'NVIDIA Nsight Tegra Visual Studio Edition' is not installed.
有人可以帮我把这个小的 main.cpp 变成 Android .so 吗?我不想使用 Android Studio 或其他 IDE。寻找创建一个 make 文件并将其添加到我的 VSCode 构建中。
谢谢你。
解决方案
请使用MinGW Makefiles
生成器和其他选项,如下所示
cmake
-G"MinGW Makefiles"
-DCMAKE_TOOLCHAIN_FILE=xxx -DCMAKE_MAKE_PROGRAM=xxx
-DANDROID_TOOLCHAIN=clang -DANDROID_ABI=armeabi-v7a/ABI=arm64-v8a
-DANDROID_NATIVE_API_LEVEL=xxx
推荐阅读
- raspberry-pi - 我是否通过设置 cpu_freq=250 来减慢我的树莓派零 W 速度?
- c++ - 识别函数原型的 PEG 规则
- python - 'TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed' 来自哪里?
- javascript - 如何使用 javascript 对 div 进行排序
- vba - 文本框的控制源设置为 DCount 函数 - 刷新问题
- linux - 读/写阻塞系统调用是否将进程置于 TASK_UNINTERRUPTIBLE 或 TASK_INTERRUPTIBLE 状态?
- regex - 用于排除捕获组的正则表达式
- ruby - 修复 404 nginx 和瘦?
- python - 使用 scikit learn 使用预先计算的余弦相似度矩阵进行层次聚类会产生错误
- java - 通过从 socket.io 发出值来有效地更新 Android seekbar