NDK 打包靜態(tài)庫和動態(tài)庫,Cmake方式(二)

安裝cmake

這里使用AndroidStudio,SDKTools里面的cmake


}{P~DF46)Q3BIZD12K3R2@W.png

安裝完成后可以在sdk目錄查看是否安裝完成:


O2$1S2P8E`G78@Z}71G6B$J.png

執(zhí)行cmake --version查看安裝版本:
7UZIZE}07NKLY8~0P``7FTD.png

打開~/.bashrc文件,把cmake配置到環(huán)境變量:


image.png

在任意目錄下執(zhí)行cmake --version查看安裝版本:
image.png

打包靜態(tài)庫

新建文件 CMakeLists.txt(命名必須是 CMakeLists.txt,注意大小寫和不要漏字母)


COK[XS_%_WMEYJM$$T]{M)E.png
cmake_minimum_required(VERSION 3.4.1)
add_library(test test.c)

新建一個 build 文件夾:


OA39S6MR8BEHWE8_E9G}3XO.png

為什么要新建一個 build 文件夾?
一般我們采用 cmake 的 out-of-source 方式來構建(即生成的中間產(chǎn)物和源代碼分離),這樣做可以讓生成的文件和源文件不會弄混,且目錄結構看起來也會清晰明了。所以推薦使用這種方式,至于這個文件夾的命名并無限制,我們習慣命名為 build。

首先進入到 build 目錄,然后就是 cmake .. 命令,.. 表示上一級目錄,cmake 會在上一級目錄下找到 CMakeLists.txt 文件并編譯,并生成如下圖所示的一些中間文件:


image.png

這里報錯了,原因是test是某些cmake特性保留的關鍵字,修改下 CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)
add_library(t test.c)
`RU@AGVULMMF9MMJ8_ZQ`J8.png

可以看到產(chǎn)生了一些中間文件,以及一個Makefile文件
然后執(zhí)行make命令,其實是執(zhí)行Makefile文件里面的命令:


@210@@72PP3RA08}F3AEIJD.png

然后進入到上一級目錄鏈接執(zhí)行:


image.png

打包動態(tài)庫

打包動態(tài)庫和靜態(tài)庫的區(qū)別就是添加一個SHARED參數(shù):

cmake_minimum_required(VERSION 3.4.1)
add_library(t SHARED test.c)
image.png

然后進入到上一級目錄鏈接執(zhí)行:


DD1B1@7G5(1PNHHMVJDG4$Y.png

執(zhí)行如下:


image.png

這里也可以不用手動鏈接庫,修改下目錄,將test.c,test.h, CMakeLists.txt放在test文件夾下:
image.png

新建一個 CMakeLists.txt生成可執(zhí)行文件:


image.png
cmake_minimum_required(VERSION 3.4.1)
add_subdirectory(test)
include_directories(test) //把頭文件目錄包含進來
add_executable(main hello.c)
target_link_libraries(main t)

進入到build目錄,依次執(zhí)行cmake,make,./main


image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容