衡阳网站建设qiandu1,小红书推广计划,宇宙企画网站,wordpress 自动推送文章目录 CMake构建工具1.概念2.mk文件3.CmakeList4.预编译 CMake构建工具
1.概念
Android构建原始库的工具#xff0c;对mk构建工具封装#xff0c;还是makefile。
加载lib库 2.mk文件
//call调用test-dir这个方法#xff0c;返回mk文件的路径#xff0c;LOCAL_PATH这… 文章目录 CMake构建工具1.概念2.mk文件3.CmakeList4.预编译 CMake构建工具
1.概念
Android构建原始库的工具对mk构建工具封装还是makefile。
加载lib库 2.mk文件
//call调用test-dir这个方法返回mk文件的路径LOCAL_PATH这是个变量
//LOCAL_PATH是Android.mk文件的目录路径
LOCAL_PATH: $(call test-dir)2.相当于清理内存
include $(CLEAR_VARS)编译过的ndk so库
LOCAL_MODULE: getndk//指定我们的静态库或者动态库
LOCAL_SRC_FILES: test.so
LOCAL_SRC_FILES: test.a//构建静态库,makefile脚本文件
include $(PREBUILT_STATIC_LIBRARY)
include $(PREBUILT_SHAREN_LIBRARY)//清理工作
include $(CLEAR_VARS)//指定库的名称要构建的模块的名字
LOCAL_MUDULE:Test//把c代码源文件也包含进去
LOCAL_SRC_FILES:test.cpp \
test.c//静态库链接
LOCAL_STATIC_LIBRARY:test
//动态库
LOCAL_SHAREN_LIBRARY:test
3.CmakeList
CMakeLists.txt
//cmake的最低支持版本
cmake_minimum_required(VERSION 3.10.2)//当前的工程名称
project(ApplicationB)//导入c文件
file(GLOB SOURCE *.cpp * .c)//C代码源文件编译成so库文件
add_library(test-libSHARED${SOURCE})
//查找库,ndk的动态库liblog.so
find_library(log-lib,log)
//这是个变量test-lib链接总库 ${log-lib}具体的库放入总库中这样我们ndk的cpp代码才能使用日志log库
target_link_libraries(test-lib, ${log-lib})//日志
message(STATUS, -------------------------TEST)//CMake变量
//变量名 变量值
set(var 666)
//输出,在CMake中的变量都是string类型
message(var ${var})//移除变量
unset(var)4.预编译
build.gradle中配置 externalNativeBuild {cmake {path file(app/src/main/cpp/CMakeLists.txt)version 3.10.2}}编译期就会把静态库的代码提前拿到运行期不需要静态库
target_link_libraries(test-lib, ${log-lib})so库在运行期执行动态库。