【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


目录
相关文章
|
11月前
|
运维 Shell 数据库
Python执行Shell命令并获取结果:深入解析与实战
通过以上内容,开发者可以在实际项目中灵活应用Python执行Shell命令,实现各种自动化任务,提高开发和运维效率。
343 20
|
11月前
|
网络协议 Unix Linux
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
546 11
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
网络协议 开发工具 C语言
Jetson错误(二):wget命令提示无法解析主机地址的问题解决
对于解决在NVIDIA Jetson平台上使用wget命令时出现的无法解析主机地址的问题,提供了两种解决方法:一种是临时修改DNS服务器为Google的公共DNS,另一种是永久修改DNS设置。
604 5
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
498 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
存储 缓存 NoSQL
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
Redis 过期删除策略与内存淘汰策略的区别及常用命令解析
302 0
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
337 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
313 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章

推荐镜像

更多
  • DNS