【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )(一)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )(一)

文章目录

一、Android Studio 中使用 CMake 编译单个 C++ 源文件

二、cmake_minimum_required 命令设置最小 CMake 版本

三、project 命令设置工程名称

四、add_library 命令设置生成函数库

五、find_library 命令设置查找函数库

六、target_link_libraries 命令设置链接函数库

七、CMakeLists.txt 详细中文注释



该系列博客的应用场景是 Android Studio 下 NDK 编程 , 使用 CMake 构建 C/C++ 工程 ;






一、Android Studio 中使用 CMake 编译单个 C++ 源文件


Android Studio 自动生成的 CMakeLists.txt 构建脚本就是默认编译单个 C++ 源码的构建脚本 ;


cmake_minimum_required(VERSION 3.10.2)
project("cmake")
add_library(
        native-lib
        SHARED
        native-lib.cpp )
find_library( 
        log-lib
        log )
target_link_libraries( 
        native-lib
        ${log-lib} )


下面开始逐个解析上面使用到的命令 ;


CMakeList.txt 中使用到的命令一共只有 93 9393 个, 47 4747 个脚本命令 , 46 4646 个工程命令 , 可以到 CMake 官方查询这些命令的用法 , 在稍后的博客中也会逐一讲解 Android Studio 中的 NDK 常用的 CMake 命令 ;


参考 【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 ) 博客 ;






二、cmake_minimum_required 命令设置最小 CMake 版本


指定 CMake 最低版本 : 使用 cmake_minimum_required 命令 , 指定编译 C/C++ 源码的 CMake 工具的最低版本 , 这里会自动生成 ;


# 指定 CMake 最低版本
cmake_minimum_required(VERSION 3.10.2)


设置格式说明 : VERSION 是固定必须写的 , VERSION 后面就是 CMake 的版本号 ;


这里推荐大家一定要安装最新的 CMake 版本 ;

image.png



官方文档地址 : https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html






三、project 命令设置工程名称


project 命令用于声明工程名称 , 同时还可以指定工程支持的语言 , 其中支持的语言可以忽略, 默认支持所有的语言 ;


# 声明项目并为项目命名.
project("cmake")


如果支持 C++ 语言的话 , 可以设置 project(“cmake” CXX) ;


官方文档地址 : https://cmake.org/cmake/help/latest/command/project.html






四、add_library 命令设置生成函数库


add_library 命令用于设置生成函数库 , 这个函数库包括 so 动态库 和 a 静态库 ;



add_library 命令作用 : 创建函数库并为函数库命名.


函数库类型 : 设置该函数库的类型 ① 静态库 STATIC ② 动态库 SHARED.


相对路径 : 指定源码路径, 注意是相对路径.


函数库个数据 : 可以定义多个函数库, CMake 会负责构建这些函数库.


动态库打包 : Gradle 会自动将动态库打包到 APK 安装包中.



add_library 命令三个参数说明 :


参数 1 : 设置生成的动态库名称.


参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED.


参数 3 : 配置要编译的源文件.


# 创建函数库并为函数库命名.
# 函数库类型 : 设置该函数库的类型 ① 静态库 STATIC ② 动态库 SHARED.
# 相对路径 : 指定源码路径, 注意是相对路径.
# 函数库个数据 : 可以定义多个函数库, CMake 会负责构建这些函数库.
# 动态库打包 : Gradle 会自动将动态库打包到 APK 安装包中.
add_library( # 参数 1 : 设置生成的动态库名称.
        native-lib
        # 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED.
        SHARED
        # 参数 3 : 配置要编译的源文件.
        native-lib.cpp )


官方文档地址 : https://cmake.org/cmake/help/latest/command/add_library.html


目录
相关文章
|
1月前
|
SQL 人工智能 Dart
Android Studio的插件生态非常丰富
Android Studio的插件生态非常丰富
69 1
|
1月前
|
Ubuntu Linux Android开发
Android Studio支持多种操作系统
Android Studio支持多种操作系统
76 1
|
1月前
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
53 8
|
1月前
|
数据可视化 开发工具 Android开发
Android Studio
Android Studio
110 1
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
77 2
|
2月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
83 0
|
2月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
67 0
|
2月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
72 0
|
4天前
|
存储 设计模式 算法
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
|
4天前
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析