一. 簡介
Code Warrior 11是基於Eclipse CDT開發的集成開發環境(IDE),在做到提供給用戶Eclipse強大的現代化的編輯器和調試器,提升代碼編輯效率和調試效率的同時,顯著降低IDE的維護工作量。
Code Warrior 11作為IDE,提供如下功能:
1. 項目模板:按照模板配置流程一步步完成項目創建;
2. 項目構建、清理、配置:只需要簡單點擊按鈕即可完成項目構建、清理;可視化配置界面;
3.項目加載、調試:一鍵完成項目加載到內存或Flash,進行調試;
這里主要介紹CW11自動生成的編譯系統(Makefile文件)。
二. 編譯系統
項目構建之前,會生成一系列Makefile文件,也就是Eclipse構建項目所需要的一系列編譯指令。
包括如下項目:
1.主makefile;
2.項目相關參數makefile.local;
3.生成項目最終目標時使用的參數:AP.args;
4.每個代碼文件對應一個編譯參數文件:如main.args;
5.各目錄的subdir.mk:定義該目錄中的OBJS以及這些OBJS的編譯規則;
以下逐一介紹。
2.makefile.local
該文件定義項目相關的路徑信息,包括當前項目的頂層路徑,使用的make程序的路徑,Code Warrior的安裝路徑,編譯toolchain的路徑(包括as, cc, ld)。
這個文件被主makefile引用。
1.主makefile
主makefile定義最終目標的生成規則,以及項目清理的規則:
引用了一堆配置文件:
配置相關:
所有下級目錄的subdir.mk:
生成最終目標需要一堆OBJS/USER_OBJS,這些OBJS定義在各目錄的subdir.mk中。主makefile引用這些subdir.mk可以導入所有需要編譯的OBJS,以生產最終目標。
3.AP.args
定義鏈接生成最終目標的鏈接參數,即LDFLAGS。包括:
a.待鏈接的各個目標文件;
b.鏈接參數;
c.鏈接文件;
d.鏈接需要的庫;
4.main.args
定義編譯各個目標文件時需要的編譯參數,即CFLAGS,包括:
a.編譯參數;
b.引用路徑;
所有目標文件的編譯參數應該是一致的。如果代碼文件是匯編文件,則該文件的參數與c文件的參數不同,提供給匯編器(as)使用。
5.subdir.mk
位於每個存放代碼文件的目錄,定義該目錄下所有代碼文件生成為目標文件所需要的規則: