有時候我們要一次運行多個文件,這時候我們可以使用Makefile!!!
◊make是什么?
make是一個命令工具,是一個解釋makefile中指令的命令工具。它可以簡化編譯過程里面所下達的指令,當執行 make 時,make 會在當前的目錄下搜尋 Makefile (or makefile) 這個文本文件,執行對應的操作。make 會自動的判別原始碼是否經過變動了,而自動更新執行檔。
◊為什么要使用make?
假設,現在一個項目里面包含了100個程序文件,如果要對這個項目進行編譯,那么光是編譯指令就有100條。如果要重新進行編譯,那么就又得像之前一樣重新來一遍。這樣重復且繁瑣的工作實在是讓我們很不爽啊。所以,用make來進行操作,間接調用gcc豈不是很方便?如果我們更動過某些原始碼檔案,則 make 也可以主動的判斷哪一個原始碼與相關的目標文件檔案有更新過, 並僅更新該檔案。這樣可以減少重新編譯所需要的時間,也會更加方便。
◊makefile又是干什么的?
makefile其實就是一個文檔,里面定義了一系列的規則指定哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,它記錄了原始碼如何編譯的詳細信息! makefile一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。
先看一下makefile的規則:
目標(target):目標文件1 目標文件2
<Tab>gcc -o 欲建立的執行文件 目標文件1 目標文件2
先舉一個運行多個c語言文件。
首先下面是一個完整的 c語言文件,實現了統計用戶輸入的字符串中大小寫字母的個數
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
void test(){
char str[50]={0};
scanf("%s",str);
int m=0;
int n=0;
pid_t p=fork();
if(p<0){
printf("fork failed");
}
if(p == 0){
for(int i=0;i<sizeof(str);i++){
if( str[i]<='Z'&& str[i]>='A'){
m++;
}
}
printf("大寫字母一共有");
printf("%d",m);
printf("個");
}
if(p>0){
for(int i=0;i<sizeof(str);i++){
if(str[i]>='a' && str[i]<='z'){
n++;
}
}
printf("小寫字母一共有");
printf("%d",n);
printf("個");
}
}
int main()
{
test();
return 0;
}
此時我們可以把該文件拆成三份,一份是.h文件,用來放頭文件等信息,另外兩個是.c文件,一個用來放main方法,一個放聲明的函數,如下三圖
則在終端進行一下操作
成功運行多個文件
下面介紹運行cpp文件,大致步驟相同。
一個 cpp文件寫成多份的形式
稍微注意的就是gcc 和g++的使用。