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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何在keil下实现单工程多目标的设置(选择性自动编译)

發(fā)布時(shí)間:2023/12/15 编程问答 68 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在keil下实现单工程多目标的设置(选择性自动编译) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在研究Cortex-M系列CPU,整了一個(gè)工程來進(jìn)行不同MCU之間的移植測(cè)試,其中涉及到Cortex-M0、Cortex-M3、Cortex-M4等多款MCU。于是產(chǎn)生了一個(gè)想法,如何在Keil里面建立一個(gè)【單工程多目標(biāo)】的工程?換句話說就是,只有一個(gè)工程項(xiàng)目文件,將所有涉及到的代碼文件全部關(guān)聯(lián)進(jìn)去,但是在編譯的時(shí)候可以自由的選擇不同的目標(biāo)平臺(tái),進(jìn)而由編譯器自動(dòng)納入所需要的源文件進(jìn)行編譯,去除多余的文件,從而生成所對(duì)應(yīng)的目標(biāo)文件。這樣的事情,在linux下也就是一個(gè)腳本而已,但是在Keil下,我還沒有試過,不知道行不行。

不過,說干就干。咱就來試試吧。下面就以一個(gè)很簡(jiǎn)單的示例來介紹一下如何實(shí)現(xiàn)在同一個(gè)工程里實(shí)現(xiàn)不同目標(biāo)文件的自動(dòng)編譯。

一、規(guī)劃工程目錄

首先介紹一下我的示例工程的目錄架構(gòu)。

project目錄下存放工程文件,sources目錄下存放源代碼。為了簡(jiǎn)單起見,這里的源代碼只包含2個(gè),一個(gè)是所有工程共用的main模塊,一個(gè)是每個(gè)工程下不一樣的drv模塊。main模塊直接存放在sources目錄下,而drv模塊則分別存放于以不同型號(hào)mcu命名的子目錄下,如下圖:

二、建立項(xiàng)目工程

打開keil,建立工程文件。我這里的keil是5.0版本的,大家如果使用太舊的版本,可能會(huì)遇到其他問題,建議更新到這個(gè)版本。

輸入工程名,我輸入的是multi_project,確認(rèn)就可以建立出新的工程了。然后選擇“manage project items”,完成工程名、源碼目錄以及代碼文件的添加。如下圖:

注意:這里的cortex_m0、cortex_m3、cortex_m4指的就是上面所說的工程名字,接下去針對(duì)這里的每一個(gè)工程單獨(dú)進(jìn)行設(shè)置。選擇cortex_m0工程,點(diǎn)擊下方的“set as current target”按鈕,然后點(diǎn)擊OK關(guān)閉對(duì)話框!

這樣就將當(dāng)前的工程設(shè)置為了cortex_m0,而不是cortex_m3或者cortex_m4。這一點(diǎn),可以從下圖中看出。

三、設(shè)置工程屬性

1、設(shè)置編譯參數(shù)

再次右擊工程,不過這次不選item,而是選擇“options”,如下圖:

打開屬性對(duì)話框,完成工程相關(guān)屬性的設(shè)置,這里僅做貼圖演示,具體內(nèi)容就不一一解釋了。

完成所有設(shè)置之后,點(diǎn)擊確認(rèn),關(guān)閉對(duì)話框。

2、指定包含關(guān)系

接下去還要完成cortex_m0工程下的依賴目錄以及需要編譯的文件的指定。因?yàn)閙ain模塊是所有工程都需要包含的,所以無需額外設(shè)置。但是drv模塊是根據(jù)不同MCU來選擇的,因此,在cortex_m0工程里,我們只需要包含cortex_m0模塊對(duì)應(yīng)的drv模塊就好,其他兩款MCU的驅(qū)動(dòng)模塊不需要包含。于是要在cortex_m0對(duì)應(yīng)的drv模塊目錄上右擊,選擇屬性:

將其設(shè)置為本工程可用的狀態(tài)。

然后再分別選擇drv_m3和drv_m4兩個(gè)目錄,同理將其設(shè)置為不可用的狀態(tài)。

設(shè)置完成之后,再回到目錄視圖,可以看到被選擇為不可用的兩個(gè)drv目錄上,出現(xiàn)了一個(gè)紅色的禁用標(biāo)志:

3、完成其他工程的設(shè)置

至此完成了cortex_m0工程的選項(xiàng)設(shè)置。于是,接下去還要依葫蘆畫瓢的完成cortex_m3工程、以及cortex_m4工程的選項(xiàng)設(shè)置。具體辦法是,再次右擊工程,選擇“manage project items”,在彈出的窗口中,選擇cortex_m3作為當(dāng)前活動(dòng)工程。如下圖所示:


然后再重復(fù)上述步驟,完成cortex_m3工程的選項(xiàng)設(shè)置。之后再重復(fù)一次本輪操作,完成cortex_m4工程的選項(xiàng)設(shè)置。

最終實(shí)現(xiàn)的效果,可在目錄結(jié)構(gòu)視圖中再次得到確認(rèn):

可以看到,在m3的工程中,m0和m4的驅(qū)動(dòng)模塊組已被禁用,而在m4的工程中,m0和m3的驅(qū)動(dòng)模塊組已被禁用。這就實(shí)現(xiàn)了不同工程下的關(guān)聯(lián)文件的適配。

至此,完成了上述3個(gè)工程的全部設(shè)置過程。將你所需要的工程設(shè)置為當(dāng)前的活動(dòng)工程,然后點(diǎn)擊編譯,系統(tǒng)就會(huì)自動(dòng)識(shí)別出所關(guān)聯(lián)的文件并編譯出對(duì)應(yīng)的目標(biāo)文件。如下圖所示:

四、附錄

為了便于交流,將本文中所演示的示例工程,打包上傳在本人的CSDN中,有需要者可以自行下載。網(wǎng)址是(http://download.csdn.net/download/leon1741/10139351)。

總結(jié)

以上是生活随笔為你收集整理的如何在keil下实现单工程多目标的设置(选择性自动编译)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。