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

简介: 【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


目录
相关文章
|
10天前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
54 0
|
25天前
|
人工智能 机器人 编译器
【C++】Windows端VS code中运行CMake工程(手把手教学)
【C++】Windows端VS code中运行CMake工程(手把手教学)
|
10天前
|
安全 Java 定位技术
Android 浅度解析:AIDL & Binder (1)
Android 浅度解析:AIDL & Binder (1)
38 0
|
2天前
|
前端开发 测试技术 数据处理
安卓开发中的MVP架构模式深度解析
【4月更文挑战第30天】在移动应用开发领域,模型-视图-呈现器(Model-View-Presenter, MVP)是一种广泛采用的架构模式。它旨在通过解耦组件间的直接交互来提高代码的可维护性和可测试性。本文将深入探讨MVP在安卓开发中的应用,揭示其如何促进代码的模块化,提升用户界面的响应性,并简化单元测试过程。我们将从理论概念出发,逐步过渡到实践案例,为读者提供一套行之有效的MVP实施策略。
|
9天前
|
存储 物联网 数据库
Android 11 以上 SettingsProvider DatabaseHelper 解析
Android 11 以上 SettingsProvider DatabaseHelper 解析
17 0
|
9天前
|
安全 Java Shell
Android13 adb input 调试命令使用和源码解析
Android13 adb input 调试命令使用和源码解析
17 0
|
10天前
|
XML Java API
Android 浅度解析:系统框架层修改,编译,推送相关操作
Android 浅度解析:系统框架层修改,编译,推送相关操作
24 0
|
19天前
|
编解码 Android开发 开发者
安卓碎片(Fragments)深度解析:模块化您的应用
【4月更文挑战第13天】Android开发中,碎片(Fragments)用于应对多屏幕尺寸挑战,实现代码重用和模块化。碎片可嵌套在活动中,适应不同屏幕,简化多屏适配、导航和视图管理。通过`FragmentTransaction`动态操作,实现状态保存及回退栈管理。注意避免内存泄漏,考虑性能开销,确保跨设备测试。碎片增强应用灵活性,但也增加复杂性,未来有望有更高级工具优化开发。
|
24天前
|
JSON 安全 Java
Android网络部分-----网络数据请求、解析
Android网络部分-----网络数据请求、解析
Android网络部分-----网络数据请求、解析
|
1月前
|
存储 C++
【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)
【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)

推荐镜像

更多