最近我在進(jìn)行一個(gè)項(xiàng)目的開(kāi)發(fā),用的IDE是Keil mdk,由于代碼量逐漸增加,發(fā)現(xiàn)編譯的速度越來(lái)越慢。
構(gòu)建項(xiàng)目
這個(gè)項(xiàng)目基于STM32F407,在此基礎(chǔ)上還添加了FreeRTOS和LWIP TCP/IP 協(xié)議棧,所以整體的代碼量就被協(xié)議棧和RTOS弄得很大,每次構(gòu)建項(xiàng)目或者重新構(gòu)建項(xiàng)目的時(shí)候,都要花很長(zhǎng)的時(shí)間,如下圖所示;
可以看到,在這里我用了3分鐘。這個(gè)時(shí)間太長(zhǎng)了,會(huì)大大影響我的開(kāi)發(fā)效率,所以后面嘗試了幾個(gè)方法,提高構(gòu)建的速度。
解決方案
首先我找到一個(gè)解決辦法就是在構(gòu)建過(guò)程中防止生成 Browse Information 文件。
配置
想要在項(xiàng)目配置中將這個(gè)選項(xiàng)勾選去掉即可,最終實(shí)踐發(fā)現(xiàn),項(xiàng)目構(gòu)建時(shí)間縮短到 24秒 ,整體還可以接受。
優(yōu)化后的時(shí)間
主要原因其實(shí)是構(gòu)建的時(shí)候,避免生成 .CRF 文件,生成這個(gè)文件的主要作用就是我們?cè)谶M(jìn)行代碼編輯的時(shí)候,宏定義,函數(shù)原型,函數(shù)聲明可以進(jìn)行跳轉(zhuǎn)。
CRF
官方文檔中的解釋:Cross-Reference file containing browse information (definitions, references for identifiers).
如果選擇不生成這個(gè)文件,代價(jià)就是犧牲了我們寫代碼的效率。
因?yàn)槲覀儗懘a的時(shí)候,會(huì)頻繁地進(jìn)行函數(shù)原型和函數(shù)聲明直接的跳轉(zhuǎn),有時(shí)候要跳轉(zhuǎn)到宏定義,如果無(wú)法進(jìn)行跳轉(zhuǎn),使用Keil MDK只能使用全文搜索來(lái)替代,因此一定程度上會(huì)降低效率。
進(jìn)行跳轉(zhuǎn)
當(dāng)我們嘗試跳轉(zhuǎn)到函數(shù)聲明時(shí),最終提示如下:
錯(cuò)誤提示
這時(shí)候,我喜歡配合其他編輯器,比如source insight,vs code,代碼編輯的工作放在其他體驗(yàn)更好的軟件中進(jìn)行,然后代碼的構(gòu)建和調(diào)試又重新回到keil mdk,發(fā)揮各自的優(yōu)勢(shì)。
之前寫過(guò)一篇使用EIDE的插件,在vs code中導(dǎo)入keil mdk的項(xiàng)目進(jìn)行開(kāi)發(fā),在vs code中調(diào)用arm cc進(jìn)行項(xiàng)目的構(gòu)建。
EIDE在VSCODE中的構(gòu)建時(shí)間
整體的構(gòu)建時(shí)間為 30秒 ,可以接受,然后還能充分發(fā)揮vs code在代碼編輯上的優(yōu)勢(shì),感興趣的可以試一下。
總結(jié)
今天的介紹的挺簡(jiǎn)單,主要是在keil mdk下開(kāi)發(fā),構(gòu)建項(xiàng)目時(shí)會(huì)產(chǎn)生.CRF文件,從而使構(gòu)建速度大大降低,從而影響開(kāi)發(fā)效率。
具體的解決辦法是避免生成.CRF文件,但是會(huì)影響整體函數(shù)原型和聲明以及宏定義的跳轉(zhuǎn),可以通過(guò)全文搜索,或者借助其他編輯器作為輔助手段來(lái)解決。
審核編輯:劉清
-
ARM
+關(guān)注
關(guān)注
134文章
9319瀏覽量
375354 -
RTOS
+關(guān)注
關(guān)注
24文章
844瀏覽量
120811 -
LwIP協(xié)議棧
+關(guān)注
關(guān)注
0文章
19瀏覽量
7618 -
STM32F407
+關(guān)注
關(guān)注
15文章
188瀏覽量
30280
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論