日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )

發布時間:2025/6/17 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、在 Android Studio 中創建 Native C++ 工程
  • 二、C/C++ 源碼編譯過程
  • 三、Makefile 工具
  • 四、CMake 引入



該系列博客的應用場景是 Android Studio 下 NDK 編程 , 使用 CMake 構建 C/C++ 工程 ;





一、在 Android Studio 中創建 Native C++ 工程



在 Android Studio 中創建 Native C++ 工程 :

設置工程相關屬性 , 名稱 , 包名 , 存放地址 , 以及語言, 這里選擇 Google 官方推薦的 Kotlin 語言 , 盡量避免使用 Java ;

選擇 C++ 標準 , 默認即可 ;

關于自動生成的模板參考 【Android NDK 開發】Kotlin 語言中使用 NDK ( 創建支持 Kotlin 的 NDK 項目 | Kotlin 語言中使用 NDK 要點 | 代碼示例 ) 博客 , 其中有完整的代碼示例 ;





二、C/C++ 源碼編譯過程



上述 Native C++ 工程中的 C++ 代碼是在 CMake\app\src\main\cpp 目錄下的 native-lib.cpp ;

如果將該 native-lib.cpp 源碼打包成 Kotlin 或 Java 中通過 JNI 可調用的 so 動態庫 , 需要使用 Make 工具進行編譯 ;

Make 工具需要使用 Makefile 命令 , 如 " g++ native-lib.cpp " , 編譯的默認輸出結果是 a.out 文件 ;

如果指定默認名字就使用 " gcc native-lib.cpp -o main " , 此時編譯輸出的結果是 main 文件 ;

gcc native-lib.cpp 命令執行的完整的編譯過程 , 包括 預處理 , 編譯 , 匯編 , 鏈接 四個過程 , 參考 【C 語言】編譯過程 分析 ( 預處理 | 編譯 | 匯編 | 鏈接 | 宏定義 | 條件編譯 | 編譯器指示字 ) 博客 ;

編譯過程 : 預處理 -> 編譯 -> 匯編 -> 鏈接;

  • 編譯預處理 : 產生 .i 后綴的預處理文件;
  • 編譯操作 : 產生 .s 后綴的匯編文件;
  • 匯編操作 : 產生 .o 后綴的機器碼二進制文件;
  • 鏈接操作 : 產生可執行文件 ;




  • 三、Makefile 工具



    如果源碼個數較少可以直接使用 " gcc native-lib.cpp native-lib2.cpp … " 命令 , 逐個將源碼添加在 gcc 之后 , 如果源碼個數太多 , 達到幾百上千個 , 此時就需要使用 Makefile 編譯工具了 , 編寫 Makefile 腳本 , 然后直接執行該腳本 , 即可完成數量龐大的源碼編譯工作 ;

    Makefile 參考 【嵌入式開發】 嵌入式開發工具簡介 (裸板調試示例 | 交叉工具鏈 | Makefile | 鏈接器腳本 | eclipse JLink 調試環境) 博客 ;

    Makefile 腳本示例 : 這是拷貝自上面的博客 , 用于編譯匯編文件的腳本 ;

    all: led.o @arm-linux-ld -Tled.lds -o led.elf $^@arm-linux-objcopy -O binary led.elf led.binled.o : led.Sarm-linux-gcc -g -o $@ -c $^.PHONY: clean clean:rm *.o led.elf led.bin

    在 Makefile 的當前目錄 , 執行 make 命令 , 會自動執行 Makefile 腳本中的編譯命令 ;





    四、CMake 引入



    Makefile 在 Linux 下有其固定的編寫格式 , 在 Windows 下有另外一種編寫格式 , 不同的平臺的 Makefile 的編寫格式都不同 , 非常不利于跨平臺 ;

    CMake 解決了上述 Makefile 跨平臺問題 , 使用 CMake 可以完美處理在不同平臺之間的 Makefile 不兼容的問題 ;

    CMake 可以生成不同平臺的 Makefile 文件 ;

    總結

    以上是生活随笔為你收集整理的【CMake】CMake 引入 ( Android Studio 创建 Native C++ 工程 | C/C++ 源码编译过程 | Makefile 工具 | CMake 引入 )的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。