每天都比較忙,今天抽空講解下eclipse中Makefile的使用(為何講解Makefile,主要是因為IDE有了Makefile管理工具才變得非常強大,不會寫Makefile的程序員不能稱之為合格程序員)
本文內容如下:
1.如何使用eclipse自動生成的Makefile文件
2.如何使用自己寫的Makefile文件
下面我們以Windows環境下講解,Linux下面會更加簡單些。
第一步是安裝Eclipse for C/C++ IDE ,這個就不說了,安裝過程比較可以百度。
第二步安裝Mingw32編譯器,因為eclipse僅僅只是一個IDE,並不集成編譯器。
這里有一篇博客,可以參考https://blog.csdn.net/u013171283/article/details/80898442
第三步安裝windows下的make工具,因為在Windows下面大部分用的不是make管理的,因而Windows天生不帶make管理工具。
為了方便,我推薦使用CMake工具,下載地址:https://cmake.org/download/
軟件非常小,可以默認安裝路徑,安裝好后打開cmd終端,輸入make -v,如果輸出GUN makea版本,表示安裝成功。
第四步(重要的部分):
打開Eclipse for C/C++ IDE,
畫面干凈而又不失強大。
首先新建一個C工程,工程名為hello,新建好了點擊hello工程名右鍵NEW一個新的文件,命名為main.c。保存文件,編寫如下程序:
#include "stdio.h" int main(void) { printf("hello eclipse\n"); return 0; }
如上圖所示。此時我們點擊“錘子”,會出現如下編譯結果,表示編譯完成,但為何我們的Makefile沒有出現了,奇了怪了,很顯然這並不是我想要的結果,別急,下面來設置相關選項。
問題出在我們的IDE默認使用的是CDT的make,而且默認不顯示出來,因此我們現在打破默認選項。
點擊project選項下的Propeties(如果發現此選項為灰色不可點擊,請雙擊工程文件名hello再試),
點擊上圖紅色框中所指,可以看到默認使用的是CDT Internal builder,我們修改其為gun make,如下圖所示
然后點擊Apply and close
這時我們再次點擊“錘子”(即構建),發現在Debug文件夾下生成了一個makefile文件,打開可以看到確實是gun make風格。
為何此時會生成makefile文件呢?其實原因在於IDE修改為外部構建器時,會自動生成相應的makefile文件。
但這里有一個問題,如果我們試圖去修改makefile文件,然后再編譯,發現會自動還原,這是因為每次編譯時都會自動生成makefile文件,因此我們需要設置不讓其自動生成makefile文件。
點擊project選項下的Propeties(如果發現此選項為灰色不可點擊,請雙擊工程文件名hello再試),點擊C/C++ Build選項,去掉下圖紅色圈中的勾。然后點擊Apply and close。
這時我們再修改makefile,然后編譯就不會還原了。
問題來了,那我們如何使用自己寫的makefile文件呢?
下面來講解如何使用自己寫的makefile文件。
首先點擊Project選項中的clean,刪除中間文件和目標文件
然后刪除Debug文件夾中的所有文件,在Debug文件夾中新建一個Makefile。注意:這里makefile文件必須新建在Debug文件夾下,否則IDE不識別文件
下面編寫一個簡單的makefile測試下。
hello.exe:main.o gcc $^ -o $@ %.o:../%.c gcc -c $< -o $@ .PHYONE:clean clean: rm -rf *.o hello.exe
然后編譯一下,啊哦,居然報錯,我的乖乖(表情包:砸電腦)
從錯誤提示可以看到沒有規則去創建目標文件,其實就是沒有寫規則,這里問題是因為在eclipse中默認使用的是all目標,現在我們需要自己設置目標。(關於makefile文件的編寫,后面有時間會詳細寫這部分),點擊Project選項中的Properies選項。
可以看到默認使用的還是默認的make命令規則,因此我們這里直接修改即可,如下圖:
點擊Apply and colse。
右鍵工程名,點擊Build Targets -> Create。如下圖:
下面添加構建命令
從圖中可以看到,藍色圈中是我們編寫makefile的目標,因此我們再新建構建目標時目標名就是我們的makefile文件的目標,可以看到,我們的Makefile文件有兩個目標,因此我們需要新建兩個構建命令。(同理新建clean)
現在我們直接雙擊hello.exe就可以構建我們的工程了。
如何運行程序呢?
我們右鍵工程名,按下圖就可以運行結果了