NDK学习之路-mk&cmake详解

目录

前言

一、CMake

二、Android.mk

总结



前言

​ 在android studio 2.2及以上,构建原生库的默认工具是 CMake。

CMake的脚本名默认是CMakeLists.txt

摘录:Android.mk与Cmake配置_jni cmake和andorid.mk_傅晨明的博客-CSDN博客


一、CMake

cmake 命令详解摘录:CMakeLists.txt说明_cmakelist.txt 文件格式include_directories_紫气东来_life的博客-CSDN博客


#指定cmake最小支持的版本
cmake_minimum_required(VERSION 3.4.1)

# 打印日志
message("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA>>>")
message("当前CMake的路径是:${CMAKE_SOURCE_DIR}")



file(GLOB allCpp *.cpp)
#生成一个库
#sample:表示生成的静态库的名称
#STATIC:表示生成的是静态库  SHARED 表示生成的是静态库
#test.cpp:表示将指定目录下的cpp文件打包成相应的库文件,我这里这么写表示CMakeList与cpp文件在同一路径下
add_library(
        native-lib
        SHARED
        ${allCpp})

find_library(
        log-lib

        log)

# 引入FFmpeg的头文件 指定头文件的查找目录
include_directories(${CMAKE_SOURCE_DIR}/include)

#[[# 导入静态库
add_library(get STATIC IMPORTED)
# 开始真正的导入
set_target_properties(get PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/libget.a)]]

# 引入FFmpeg的库文件,设置内部的方式引入,指定库的目录是 -L  指定具体的库-l
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/${CMAKE_ANDROID_ARCH_ABI}")

#:将用到的库添加到这里
target_link_libraries(
        native-lib

        # 具体的库文件,链接到总库
        # 这样写会报错,有坑
        # avcodec avfilter avformat avutil swresample swscale

        # 先把有依赖的库,先依赖进来
        avformat avcodec avfilter avutil swresample swscale

        ${log-lib})

二、Android.mk

# 这里面能够决定编译 Login.c

# 1.源文件在的位置。宏函数 my-dir 返回当前目录(包含 Android.mk 文件本身的目录)的路径。
# LOCAL_PATH 其实就是Android.mk文件本身的目录的路径
LOCAL_PATH := $(call my-dir)

$(info "LOCAL_PATH:======== ${LOCAL_PATH}")

# 2.清理
include $(CLEAR_VARS)

# TODO 预编译库的引入 == 提前编译好的库
LOCAL_MODULE := get

# LOCAL_SRC_FILES := libget.so
LOCAL_SRC_FILES := libget.a

# 预编译共享库的Makeifle脚本
# include $(PREBUILT_SHARED_LIBRARY)

include $(PREBUILT_STATIC_LIBRARY)

#引入其他makefile文件。CLEAR_VARS 变量指向特殊 GNU Makefile,可为您清除许多 LOCAL_XXX 变量
#不会清理 LOCAL_PATH 变量
include $(CLEAR_VARS)
# TODO end

# 3.指定库名字
#存储您要构建的模块的名称 每个模块名称必须唯一,且不含任何空格
#如果模块名称的开头已是 lib,则构建系统不会附加额外的前缀 lib;而是按原样采用模块名称,并添加 .so 扩展名。
LOCAL_MODULE := MyLoginJar

#包含要构建到模块中的 C 和/或 C++ 源文件列表 以空格分开
LOCAL_SRC_FILES := Login.c \
Test.c

# TODO 开始链接进来
# 静态库的链接
LOCAL_STATIC_LIBRARIES := get
# 动态库链接
#LOCAL_SHARED_LIBRARIES := get

# 导入 log
#LOCAL_LDLIBS := -llog
LOCAL_LDLIBS    := -lm -llog

# 4.动态库
#构建动态库BUILD_SHARED_LIBRARY 最后要动态库
include $(BUILD_SHARED_LIBRARY)


总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值