代码先锋网 代码片段及技术文章聚合

在CMake工程中使用NDK独立工具链 (二)

从android-ndk-r19开始,NDK提供了脚本android.toolchain.cmake,设置CMake所需工具链位置。

1. 下载 NDK

从Android官网NDK归档找到需要的NDK版本,并下载解压:

$ wget https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
$ unzip android-ndk-r19c-linux-x86_64.zip

2. CMake设置

android.toolchain.cmake在build/cmake目录下,首先用include()调用这个脚本设置工具链位置。

这里使用c++_shared作为C++库,需要调用add_compile_options()指定C++库的头文件位置。

如果有一些所有模块都使用的库,如liblog.so, ligz.so,可以使用add_link_options()链接它们。

set (ANDROID_ABI arm64-v8a)
set (ANDROID_PLATFORM android-28)
set (ANDROID_TOOLCHAIN clang)
set (ANDROID_STL c++_shared)

include (${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake)

add_compile_options (-I${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/c++/v1)
add_link_options (-llog -lz)

转载于:https://www.jianshu.com/p/1446f61c4f19

版权声明:本文为weixin_33875564原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33875564/article/details/91112494

智能推荐

在.NET Core中使用Channel(二)

在我们之前的文章中,看了一些非常简单的例子来说明Channel是如何工作的,我们看到了一些非常漂亮的特性,但大多数情况下它与其他某某Queue实现非常相似。让我们进入一些更高级的话题。我说的是高级,但其中很多都非常简单。 读/写分离 如果你曾经在两个类之间共享队列,你就会知道任何一个类都可以读/写,即使它们本不应该这样做。例如: 因此,生产者应该只写队列,消费者应该只读队列,在这两种情况下,它们可...

protobuf使用(二)android ndk

简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。 Protocol Buf...

CMake实践(二)HelloWorld完整工程构建

上一节,我们学习了cmake工程的内部构建和外部构建的简单介绍。对于一个完整的工程来说,应该还需要有一些版本文件COPYRIGHT和说明文档README等,以及sh脚本。 本节,我们使用外部构建, 完善HelloWorld工程。任务如下: 为工程添加一个子目录src,用来放置工程源代码。 添加一个子目录doc,用来放置这个工程的文档hello.txt。 在工程目录添加文本文件COPYRIGHT, ...

(二)在代码中使用 sqlite3

一、相关API sqlite3官网公示的API说明:http://www.sqlite.org/c3ref/funclist.html   二、测试代码 以上代码源自于我学习阶段的一位老师,非本人撰写,上传仅供参考使用。    ...

20181212——第二章在HTML中使用javascript

在html插入Javascript的主要方法,就是使用script元素 小结...

猜你喜欢

第二章--在HTML中使用JavaScript

2. <script>元素的六个属性 async:表示应该立即下载脚本,但是不影响其他脚本的下载。只对外部脚本有效。 defer:表示脚本可以延迟到文档完全解析和显示之后再执行。只对外部脚本有效。 charset:表示通过src属性指定代码的字符集。少用。 type:可以看成language的替代属性。默认值为"text/javascript"。 src:文件地址。...

MQTT系列实践二 在EGG中使用mqtt

egg.js配置 一.首先安装egg-mqtt插件 二.开启插件 三.插件配置 四.插件操作目录 五.路由设置 六.示例代码 7.一些说明 1.如果配置了多个客户端,则可以使用app.emqtt.get(instanceName)获取特定的mqtt实例,并像上面那样使用它。 2.由于插件作者没有提供d.ts文件,所以TS开发下,会报错,vscode中可以右键添加定义,或者使用TSLINT的提示功能...

怎样在tsung中使用动态參数(二)

    上一篇博客说过,在配置getOrderId请求时,能够用动态变量(order_id)解析和捕获服务端返回的json对象。这个变量能够作为接下来的订单确认请求(Confirm)的输入參数。看一下Confirm请求的配置: 注意,“_order_id"不是笔误,前面的下划线是必须的。通过%%_order_id%%,我们能够在url中直接使用动态变量。 ...

在Newlisp中使用正则表达式 二

反斜线(元字符之一) 因为元字符是特殊字符,正常使用时不会被作为普通字符用来搜索,而是使用其特殊含义,比如一对方括号表示字符集合。但是如果想对元字符本身进行搜索,就需要转义。比如 因为想要匹配的是[text]子串,所以前面用反斜线转义,在newlisp的regex规则中,双引号内必须用\\来表示反斜线。 同样,由于pcre定义了一些字符类别,都是用\引导,比如\d 表示查找数字字符,在双引号中也需...

前端学习——微信小程序

今天是学习微信小程序的第三天。 1. 一定要给脚本文件定义出口。如以下代码 是一部分数据文件,用来传数据的。在这段代码最后要加上 这段语句的作用是:通过出口 exports 到别的脚本里去。与这个出口相对应的是:在相应的JS文件顶部,声明一个postsData变量,用require来接收。代码如下: 随便声明了一个变量名,接收来自这个路径的js文件。 2.关于this.setData  ...