【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )

【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 ),第1张

概述文章目录一、AndroidNDK构建脚本二、CMake构建脚本示例三、CMake命令手册1、CMake脚本命令2、CMake工程命令一、AndroidNDK构建脚本Android中使用NDK编译C/C++源码有两种方式,参考Android官网https://developer.android.google.cndk/guide

文章目录一、Android NDK 构建脚本二、CMake 构建脚本示例三、CMake 命令手册1、CMake 脚本命令2、CMake 工程命令





一、AndroID NDK 构建脚本

AndroID 中使用 NDK 编译 C/C++ 源码有两种方式 , 参考 AndroID 官网 https://developer.android.google.cn/ndk/guides ;


方式一 : 使用 ndk-build 脚本 , 包括 AndroID.mk 和 Application.mk 两个脚本 , 详细的细节参考如下链接

ndk-buildAndroid.mkApplication.mk使用预构建的库

老的 AndroID 开发环境使用的是这种方式编译 C/C++ 源码 ;


方式二 : 使用 CMake 构建脚本 CMakeLists.txt 编译 C/C++ 源码 , 参考如下链接

CMake

这是目前 Google 官方推荐的方式 ;





二、CMake 构建脚本示例

下面的构建脚本中用到了很多命令 , 如

cmake_minimum_requiredadd_libraryset_target_propertIEsmessagefind_librarysettarget_link_librarIEs

上述命令都是 CMake 命令 , 可以在 CMake 命令文档中查询 , 当前 CMake 中有 47 47 47 个脚本命令 , 46 46 46 个工程命令 ;


CMake 构建脚本示例 :

# 指定 CMake 最低版本cmake_minimum_required(VERSION 3.4.1)# 设置函数库编译add_library( # 参数 1 : 设置生成的动态库名称        native-lib        # 参数 2 : 设置生成的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED        SHARED        # 参数 3 : 配置要编译的源文件        native-lib.cpp)# 引入静态库#       ① 参数 1 ( add ) : 设置引入的静态库名称#       ② 参数 2 ( SHARED ) : 设置引入的函数库类型 : ① 静态库 STATIC ② 动态库 SHARED#       ③ 参数 3 ( importED ) : 表示引入第三方静态库 , 导入静态库 , 相当于预编译静态库#                                   后续还需要设置导入路径 , 配合该配置使用add_library(        # 设置引入的静态库名称        add        # 设置引入的函数库类型为静态库        STATIC        # 表示引入第三方静态库        importED)# 设置上述静态库的导入路径#       设置目标属性参数 :#           ① 参数 1 ( add ) : 要设置哪个函数库的属性#           ② 参数 2 ( PROPERTIES ) : 设置目标属性#           ③ 参数 3 ( importED_LOCATION ) : 设置导入路径#           ④ 参数 4 : 配置静态库的文件路径set_target_propertIEs(        # 设置目标        add        # 设置属性        PROPERTIES        # 导入路径        importED_LOCATION        # ${CMAKE_SOURCE_DIR} 是本 CMakeList.txt 构建脚本的路径 , 是 CMake 工具内置的变量        #       AndroID CMake 也内置了一些变量 , 如 ANDROID_ABI        ${CMAKE_SOURCE_DIR}/../jnilibs/armeabi-v7a/libadd.a)# 打印日志信息#       ${ANDROID_ABI} 的作用是获取当前的 cpu 指令集架构#           当本次编译 armeabi-v7a cpu 架构时 , ${ANDROID_ABI} 值为 armeabi-v7a#           当本次编译 x86 cpu 架构时 , ${ANDROID_ABI} 值为 x86message("CMAKE_SOURCE_DIR : ${CMAKE_SOURCE_DIR}, ANDROID_ABI : ${ANDROID_ABI}")# 到预设的目录查找 log 库 , 将找到的路径赋值给 log-lib#   这个路径是 NDK 的 ndk-bundle\platforms\androID-29\arch-arm\usr\lib\liblog.so#   不同的 AndroID 版本号 和 cpu 架构 需要到对应的目录中查找 , 此处是 29 版本 32 位 ARM 架构的日志库find_library(        log-lib        log)# 设置变量# CMAKE_CXX_FLAGS 表示会将 C++ 的参数传给编译器# CMAKE_C_FLAGS 表示会将 C 参数传给编译器# 参数设置 : 传递 CMAKE_CXX_FLAGS C+= 参数给编译器时 , 在 该参数后面指定库的路径#   CMAKE_SOURCE_DIR 指的是当前的文件地址#   -L 参数指定动态库的查找路径#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/../jnilibs/armeabi-v7a")# 链接函数库#       参数 1 : 本构建脚本要生成的动态库目 标#       参数 2 ~ ... : 后面是之前预编译的动态库或静态库 , 或引入的动态库target_link_librarIEs(        native-lib        # 表示 编译 native-lib 模块, 要链接 add 模块        add        ${log-lib})

从之前的一篇博客 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 ) 复制来的 ;





三、CMake 命令手册

CMake 命令分为三种 , 脚本命令 , 工程命令 , CTest 命令 ;



1、CMake 脚本命令

CMake 有 47 47 47 个脚本命令 , 这些命令在任何时候都可以使用 , 参考 cmake-commands(7) : Scripting Commands 文档 ;

47 47 47 个脚本命令如下 :

breakcmake_host_system_informationcmake_languagecmake_minimum_requiredcmake_parse_argumentscmake_policyconfigure_filecontinueelseelseifendforeachendfunctionendifendmacroenDWhileexecute_processfilefind_filefind_libraryfind_packagefind_pathfind_programforeachfunctionget_cmake_propertyget_directory_propertyget_filename_componentget_propertyifincludeinclude_guardListmacromark_as_advancedmathmessageoptionreturnseparate_argumentssetset_directory_propertIEsset_propertysite_namestringunsetvariable_watchwhile


2、CMake 工程命令

CMake 中有 46 46 46 个工程命令 , 一般在 CMake 工程中才可以使用上述工程命令 ;

46 46 46 个工程命令如下 , 详细的命令细节参考 cmake-commands(7) : Project Commands 文档 ;

add_compile_deFinitionsadd_compile_optionsadd_custom_commandadd_custom_targetadd_deFinitionsadd_dependencIEsadd_executableadd_libraryadd_link_optionsadd_subdirectoryadd_testaux_source_directorybuild_commandcreate_test_sourceListdefine_propertyenable_languageenable_testingexportfltk_wrap_uiget_source_file_propertyget_target_propertyget_test_propertyinclude_directorIEsinclude_external_msprojectinclude_regular_Expressioninstalllink_directorIEslink_librarIEsload_cacheprojectremove_deFinitionsset_source_files_propertIEsset_target_propertIEsset_tests_propertIEssource_grouptarget_compile_deFinitionstarget_compile_featurestarget_compile_optionstarget_include_directorIEstarget_link_directorIEstarget_link_librarIEstarget_link_optionstarget_precompile_headerstarget_sourcestry_compiletry_run


在 AndroID Studio 中的 CMake 构建脚本 CMakeLists.txt 中使用到的所有 CMake 命令都来自上述脚本命令和工程命令 , 如 add_library , find_library , target_link_librarIEs 等 ;


AndroID Studio 中的 CMakeLists.txt 构建脚本中常用的命令 :

cmake_minimum_requiredadd_libraryset_target_propertIEsmessagefind_librarysettarget_link_librarIEs 总结

以上是内存溢出为你收集整理的【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )全部内容,希望文章能够帮你解决【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053862.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存