Cmake語(yǔ)法

須菩提,若有人言:如來(lái)若來(lái)若去,若坐若臥,是人不解我所說(shuō)義。何以故?如來(lái)者,無(wú)所從來(lái),亦無(wú)所去,故名如來(lái)?!?/h4>

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?----佛說(shuō)

什么是Cmake?

在Android Studio2.2及以上,構(gòu)建原生庫(kù)的默認(rèn)工具是Cmake。

1 Cmake是一個(gè)跨平臺(tái)的構(gòu)建工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯過(guò)程)。能夠輸出各種各樣的makefile或者project文件,Cmake并不直接構(gòu)建最終的軟件,而是產(chǎn)生其他工具的腳本(如makefile),然后再依據(jù)這個(gè)工具的構(gòu)建方式使用。

2 Cmake是一個(gè)比make更高級(jí)的編譯配置工具,它可以根據(jù)不同的平臺(tái),不同的編譯器,生成相應(yīng)的makefile或者vcproj項(xiàng)目,從而達(dá)到跨平臺(tái)的目的。Android Studio利用Cmake生成ninja.ninja是一個(gè)小型的關(guān)注速度的構(gòu)建系統(tǒng)。我們不需要關(guān)心ninja的腳本。知道怎么配置Cmake就可以了。

3 Cmake其實(shí)是一個(gè)跨平臺(tái)的支持產(chǎn)出各種不同的構(gòu)建腳本的一個(gè)工具

Cmake源文件

1 Cmake的源碼文件可以包含命令,注釋,空格和換行

2 以Cmake編寫的源文件以CmakeList.txt命名或以.cmake為擴(kuò)展名。

3 可以通過(guò)add_subdirectory()命令把子目錄的Cmake源文件添加進(jìn)來(lái)

4 Cmake源文件中所有有效語(yǔ)句都是命令,可以是內(nèi)置命令或者自定義的函數(shù)/宏命令

Cmake注釋

單行注釋:#注釋內(nèi)容? ? ? ? ?例如? #? ??add_subdirectory()

多行注釋:可以使用括號(hào)來(lái)實(shí)現(xiàn)多行注釋:#[[多行注釋]]??例如? #? ??[[add_subdirectory()]]

Cmake變量的定義與使用

Cmake中所有的變量都是string類型。可以使用set()和unset()命令來(lái)聲明或移除一個(gè)變量

變量的引用:${變量名字}

Cmake列表定義與使用(lists)

列表也是一個(gè)字符串,可以把列表看作一個(gè)特殊的變量,這個(gè)變量有多個(gè)值,類似可變長(zhǎng)參數(shù)。

語(yǔ)法格式

set(列表名字 值1 值2....值N)或者set(列表名:"值1 值2....值N")

列表名的引用 :${列表名}

Cmake流程控制---操作符

優(yōu)先級(jí):帶括號(hào)的表達(dá)式優(yōu)先于一元操作符,一元操作符優(yōu)先于二元操作符,二元操作符優(yōu)先于邏輯操作符。

Cmake流程控制---布爾常量值

Cmake流程控制---條件命令

示例代碼

Cmake流程控制---循環(huán)命令

Cmake自定義函數(shù)命令

Cmake自定義宏命令


Cmake變量的作用域

1 全局層:cache變量,在整個(gè)項(xiàng)目范圍可見,一般在set定義變量時(shí),指定CACHE參數(shù)就能定義為cache變量

2 目錄層:在當(dāng)前目錄CMakeLists.txt中定義,以及在該文件包含的其他cmake源文件中定義變量。

3 函數(shù)層:在命令函數(shù)中定義變量,屬于函數(shù)作用域內(nèi)的變量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容