當前位置:首頁 » 編程軟體 » cmake編譯出來的mk有用么

cmake編譯出來的mk有用么

發布時間: 2023-07-10 23:53:23

❶ make makefile cmake qmake都是什麼,有什麼區別

1. make 是用來執行Makefile的。
2. Makefile是類unix環境下(比如linux)的類似於批處理的"腳本"文件。其基本語法是: 目標+依賴+命令,只有在目標文件不存在,或目標比依賴的文件更舊,命令才會被執行。由此可見,Makefile和make可適用於任意工作,不限於編程。比如,可以用來管理latex。
3. Makefile+make可理解為類unix環境下的項目管理工具,但它太基礎了,抽象程度不高,而且在windows下不太友好(針對visual studio用戶),於是就有了跨平台項目管理工具cmake
4. cmake是跨平台項目管理工具,它用更抽象的語法來組織項目。雖然,仍然是目標,依賴之類的,但更為抽象和友好,比如可用math表示數學庫,而不需要再具體指定到底是math.dll還是libmath.so,在windows下它會支持生成visual studio的工程,在linux下它會生成Makefile,甚至它還能生成eclipse工程文件。也就是說,從同一個抽象規則出發,它為各個編譯器定製工程文件。
5. cmake是抽象層次更高的項目管理工具,cmake命令執行的CMakeLists.txt文件
6. qmake是Qt專用的項目管理工具,對應的工程文件是*.pro,在Linux下面它也會生成Makefile,當然,在命令行下才會需要手動執行qmake,完全可以在qtcreator這個專用的IDE下面打開*.pro文件,使用qmake命令的繁瑣細節不用管了。

總結一下,make用來執行Makefile,cmake用來執行CMakeLists.txt,qmake用來處理*.pro工程文件。Makefile的抽象層次最低,cmake和qmake在Linux等環境下最後還是會生成一個Makefile。cmake和qmake支持跨平台,cmake的做法是生成指定編譯器的工程文件,而qmake完全自成體系。

❷ Opencv 編譯好的和用Cmake生成的有什麼不同呢 Cmake是什麼用的 通俗些最好了,謝謝!

Cmake是一個make工具,它可以根據makefile文件來調用你和編譯器進行多個文件的編譯和鏈接。用Cmake生成的就是使用你本地的編譯器來編譯生成那些文件。

❸ Cmake是什麼有什麼作用為什麼要使用Cmake

CMake是一個跨平台的安裝(編譯)工具,可以用簡單的語句來描述所有平台的安裝(編譯過程)。作用是他能夠輸出各種各樣的makefile或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。

只是 CMake 的組態檔取名為 CMakeLists.txt。Cmake 並不直接建構出最終的軟體,而是產生標準的建構檔(如 Unix 的 Makefile 或WindowsVisual C++的 projects/workspaces),然後再依一般的建構方式使用。

這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟體,這種可以使用各平台的原生建構系統的能力是 CMake 和 SCons 等其他類似系統的區別之處。

CMake是為了解決美國國家醫學圖書館出資的Visible Human Project專案下的Insight Segmentation and Registration Toolkit (ITK) 軟體的跨平台建構的需求而創造出來的,其設計受到了Ken Martin開發的pcmaker所影響。pcmaker當初則是為了支持Visualization Toolkit這個開放源代碼的三維圖形和視覺系統才出現的,VTK也採用了CMake。

❹ Android.mk介紹(一)

在Linux下,可以通過Makefile來對源碼工程進行管理,Android.mk文件是Makefile的一小部分,它用來對Android程序進行編譯。Android.mk文件中描述了哪些C文件將被編譯且指明了如何編譯。Android.mk文件用來告知NDK Build 系統關於Source的信息。

1、編譯可執行程序

2、編譯動態庫或靜態庫

3、預編譯文件(APK或java庫)

以上三種是Android.mk的主要用法,我們寫mk文件時也就是以上三種目的。


首先看一個最簡單的Android.mk的例子:

講解:

每個Android.mk文件必須以定義 LOCAL_PATH 為開始。它用於在開發tree中查找源文件。

my-dir 由Build System提供。返回包含Android.mk的目錄路徑。

CLEAR_VARS 變數由Build System提供。並指向一個指定的GNU Makefile,由它負責清理很多LOCAL_xxx.

例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理 LOCAL_PATH .

這個清理動作是必須的,因為所有的編譯控制文件由同一個GNU Make解析和執行,其變數是全局的。所以清理後才能避免相互影響。

LOCAL_MODULE 模塊必須定義,以表示Android.mk中的每一個模塊。名字必須唯一且不包含空格。

Build System會自動添加適當的前綴和後綴。例如,foo,要產生動態庫,則生成libfoo.so.

但請注意:如果模塊名被定為:libfoo.則生成libfoo.so. 不再加前綴。

LOCAL_SRC_FILES變數必須包含將要打包如模塊的C/C++ 源碼。

不必列出頭文件,build System 會自動幫我們找出依賴文件。

預設的C++源碼的擴展名為.cpp. 也可以修改,通過LOCAL_CPP_EXTENSION。

BUILD_SHARED_LIBRARY:是Build System提供的一個變數,指向一個GNU Makefile Script。

它負責收集自從上次調用include $(CLEAR_VARS) 後的所有LOCAL_XXX信息。並決定編譯為什麼。

BUILD_STATIC_LIBRARY:編譯為靜態庫。
BUILD_SHARED_LIBRARY :編譯為動態庫
BUILD_EXECUTABLE:編譯為Native C可執行程序

BUILD_PACKAGE(既可以編apk,也可以編資源包文件,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true)

BUILD_JAVA_LIBRARY(Java共享庫)

BUILD_STATIC_JAVA_LIBRARY(java靜態庫)


Android源碼中有大量的mk文件,Android系統的編譯就是靠著這些mk文件的,所以學好是非常有必要的哦!

熱點內容
javatomcat伺服器搭建伺服器 發布:2025-02-07 10:55:22 瀏覽:622
vcenter存儲器集群 發布:2025-02-07 10:54:31 瀏覽:583
咖啡的腳本 發布:2025-02-07 10:46:18 瀏覽:520
nsftp速度 發布:2025-02-07 10:30:58 瀏覽:431
存儲過程ifor 發布:2025-02-07 10:25:28 瀏覽:433
命令行執行oracle腳本文件命令行 發布:2025-02-07 10:14:49 瀏覽:96
ibook安卓怎麼下 發布:2025-02-07 10:12:13 瀏覽:693
銀行卡沒有密碼怎麼辦啊 發布:2025-02-07 10:08:13 瀏覽:31
游戲庫源碼 發布:2025-02-07 09:49:15 瀏覽:54
享宇錢包上傳不了照片 發布:2025-02-07 09:48:32 瀏覽:633