使用makefile編譯多個文件(.c , .cpp , .h等)


有時候我們要一次運行多個文件,這時候我們可以使用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++的使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM