CMake构建工具

文章目录

  • CMake构建工具
    • 1.概念
    • 2.mk文件
    • 3.CmakeList
    • 4.预编译

CMake构建工具

1.概念

Android构建原始库的工具,对mk构建工具封装,还是makefile。
在这里插入图片描述

加载lib库

在这里插入图片描述

2.mk文件

//call调用test-dir这个方法,返回mk文件的路径,LOCAL_PATH这是个变量
//LOCAL_PATH是Android.mk文件的目录路径
LOCAL_PATH:= $(call test-dir)2.相当于清理内存
include $(CLEAR_VARS)编译过的ndk so库
LOCAL_MODULE:= getndk//指定我们的静态库或者动态库
LOCAL_SRC_FILES:= test.so
LOCAL_SRC_FILES:= test.a//构建静态库,makefile脚本文件
include $(PREBUILT_STATIC_LIBRARY)
include $(PREBUILT_SHAREN_LIBRARY)//清理工作
include $(CLEAR_VARS)//指定库的名称,要构建的模块的名字,
LOCAL_MUDULE:=Test//把c代码源文件也包含进去
LOCAL_SRC_FILES:=test.cpp \
test.c//静态库链接
LOCAL_STATIC_LIBRARY:=test
//动态库
LOCAL_SHAREN_LIBRARY:=test

3.CmakeList

CMakeLists.txt

//cmake的最低支持版本
cmake_minimum_required(VERSION 3.10.2)//当前的工程名称
project("ApplicationB")//导入c文件
file(GLOB SOURCE *.cpp * .c)//C代码源文件编译成so库文件
add_library(test-libSHARED${SOURCE})
//查找库,ndk的动态库liblog.so
find_library(log-lib,log)
//这是个变量,test-lib链接总库 ${log-lib}具体的库放入总库中,这样我们ndk的cpp代码才能使用日志log库
target_link_libraries(test-lib, ${log-lib})//日志
message(STATUS, "-------------------------TEST")//CMake变量
//变量名 变量值
set(var 666)
//输出,在CMake中的变量都是string类型
message("var = ${var}")//移除变量
unset(var)

4.预编译

build.gradle中配置

 externalNativeBuild {cmake {path file("app/src/main/cpp/CMakeLists.txt")version '3.10.2'}}

编译期,就会把静态库的代码提前拿到,运行期不需要静态库,

target_link_libraries(test-lib, ${log-lib})

so库在运行期执行,动态库。,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192235.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文搞懂设计模式之责任链模式

大家好,我是晴天。我们又见面了,本周我们继续学习设计模式,本周将同大家一起学习责任链模式。 场景引入 我们回想一下自己曾经经历过的考学场景,我们是如何一步一步考上大学的(为了简化过程只提取核心环节&#xff09…

如何使用vue组件

目录 1:组件之间的父子关系 2:使用组件的三个步骤 3:components组件的是私有子组件 4:在main.js文件中使用Vue.component全局注册组件 1:组件之间的父子关系 一:首先封装好的组件是不存在任何的关系的…

springboot(ssm家政服务系统 家政预约平台Java(codeLW)

springboot(ssm家政服务系统 家政预约平台Java(code&LW) 开发语言:Java 框架:ssm/springboot vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7(或8.0&#xff09…

强化学习简明教程

到目前为止,我们主要关注监督学习问题(主要是分类)。 在监督学习中,我们得到某种由输入/输出对组成的训练数据,目标是能够在学习模型后根据一些新输入来预测输出。 例如,我们之前研究过 MNIST 的卷积神经网…

阅读笔记|A Survey of Large Language Models

阅读笔记 模型选择:是否一定要选择参数量巨大的模型?如果需要更好的泛化能力,用于处理非单一的任务,例如对话,则可用选更大的模型;而对于单一明确的任务,则不一定越大越好,参数小一…

Python简单模拟蓝牙车钥匙协议

本文设计一个简单的蓝牙车钥匙协议,协议包含DH密钥协商和基于RSA的身份认证功能,以及防重放与消息完整性验证。 1. 密钥协商过程: - 设定 DH 参数:素数 p 和生成元 g。 - 发送方(Alice)生成 DH 的私钥 a 并计算公钥 A…

.sketch的文件转.psd文件

我们不能直接把sketch 转成 psd格式,但是还是有迂回办法的!一起跟随我来看看吧 第一步: 在即时设计官网首页「文件导入」的下拉菜单里,选择「Sketch 文件导入」,然后将需要转换的 Sketch 文件导入,接着直接…

web前端之vue3

MENU vue3响应式数据的判断、isRef、isReactive、isReadonly、isProxy、ref、reactive、readonlyvue3的生命周期vue3手写isRef、isReactive、isReadonly、isProxyvue3手写ref、深的refvue3手写shallowRef、浅的refvue3customRefvue3readonly与shallowReadonlyvue3toRaw与markRa…

BearPi Std 板从入门到放弃 - 1 引气入体篇

安装相关开发工具 Keil MDK 工具下载 略, 自行体会 Keil 芯片支持包下载 Keil 包 网址 https://www.keil.com/pack 此处下载的是STM32L4xx的支持包 https://www.keil.com/pack/Keil.STM32L4xx_DFP.2.6.2.pack STM32CubeMX 下载与包下载 i. 下载(需要使用用户&…

DouyinAPI接口系列丨Douyin商品详情数据接口丨Douyin视频详情数据接口

抖音商品详情API是抖音开放平台提供的一套API接口,用于获取商品详情信息。通过该API,开发者可以获取到商品的详细信息,包括商品ID、名称、描述、价格、销量、评价等信息。 在使用抖音商品详情API之前,需要先注册并登录抖音开放平…

fl studio21.2最新汉化中文完整版网盘下载

fl studio 21中文版是Image-Line公司继20版本之后更新的水果音乐制作软件,很多用户不太理解,为什么新版本不叫fl studio 21或fl studio2024,非得直接跳到21.2版本,其实该版本是为了纪念该公司22周年,所以该版本也是推出…

系统监控:使用日志文件 journalctl的使用

journalctl 显示最近登录的: 上面有最近登录的时间,和系统操作 几十年来,Linux日志记录一直由syslogd守护进程管理。Syslogd将收集系统处理和应用程序发送到/dev/log伪设备的日志消息。然后,它会将消息定向到/var/log/目录中适当…

MacDroid Pro for Mac – 安卓设备文件传输助手,实现无缝连接与传输!

想要在Mac电脑上轻松管理和传输您的安卓设备文件吗?MacDroid Pro for Mac 是您的最佳选择!这款强大的文件传输助手可以让您在Mac上与安卓设备之间实现快速、方便的文件传输。 MacDroid Pro for Mac 提供了简单易用的界面,让您能够直接在Mac上…

人工智能和网络安全:坏与好

人工智能似乎可以并且已经被用来帮助网络犯罪和网络攻击的各个方面。 人工智能可以用来令人信服地模仿真人的声音。人工智能工具可以帮助诈骗者制作更好、语法正确的网络钓鱼消息(而糟糕的语法往往会暴露出漏洞),并将其翻译成多种语言&…

字符函数 和 字符串函数

今天我打算介绍一些字符函数和字符串函数,有一些字符串函数我实现了模拟,但文章中没有放出来,如果需要的欢迎来到我的gitee里面拿取(在test.c11-23里面) 这是我的gitee:小汐 (lhysxx) - Gitee.com 字符函数 1. islow…

matlab操作方法(一)——向量及其操作

1.向量及其操作 matlab是英文Matrix Laboratory(矩阵实验室)的简称,是基于矩阵运算的操作环境。matlab中的所有数据都是以矩阵或多维数组的形式存储的。向量和标量是矩阵的两种特殊形式 向量是指单行或者单列的矩阵,它是构成矩阵…

C语言易错知识点八(结构体)

结构体 世间万物,上至飞禽,下至走兽,全都知道一件事:三个臭皮匠,顶个诸葛亮。(假的)即使是处于人类前沿的编程语言也知道要把数据联合在一起,于是便有了数组,结构体&…

org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource

DynamicDataSource-CSDN博客 /** Copyright 2002-2020 the original author or authors.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the L…

鸿蒙工具DevEco Studio调试Build task failed. Open the Run window to view details.

DevEco Studio 预览代码时候出现的问题 1.进入设置 2.打开设置,构建,执行,部署下面的Hvigor, 把构建守护进程关掉就行。 然后重启启动一下就好了

破解app思路

1.会看smali代码逻辑 一.快速定位关键代码 1.分析流程 搜索特征字符串 搜索关键 api 通过方法名来判断方法的功能 2.快速定位关键代码 反编译 APK 程序 AndroidManifest.xml>包名/系统版本/组件 程序的主 activity(程序入口界面) 每个 Android 程序…