Linux中makefile的極為簡單的應用
阿新 • • 發佈:2020-09-01
makefile的簡單用法
對於makefile的詳細描述,其實網上已經有很多了,但是一看每個都是那麼複雜,頓時有點望而生畏,所以這裡就真的僅僅是簡單的介紹一下makefile的使用,十分鐘即可瞭解如何編譯簡單的cpp檔案。
makefile的格式:
target:dependency_files ##生成target所需要的所有dependency_files
command #注意是一個TAB
例子:
hello.o:hello.c hello.h
gcc -c hello.c -o hello.o
在沒有編寫makefile之前可以使用命令gcc *.c -Wall
head.h:
void print1();
void print2();
f1.c:
#include <stdio.h>
void print1(){
printf("Message:f1\n");
}
f2.c:
#include <stdio.h>
void print2(){
printf("Message:f2\n");
}
main.c:
#include <stdio.h> #include "head.h"//呼叫自己寫的標頭檔案用引號 int main() { print1(); print2(); printf("end main\n"); return 0; }
新建makefile檔案並輸入以下內容
test:f1.o f2.o main.o gcc f1.o f2.o main.o -o test f2.o:f2.c gcc -c -Wall f2.c -o f2.o# -Wall允許發出gcc所有有用的報警資訊 f1.o:f1.c gcc -c -Wall f1.c -o f1.o#-c表示只編譯不連結,生成目標檔案“.o” main.o:main.c gcc -c -Wall main.c -o main.o#-o file表示把輸出檔案輸入到file裡 clean: rm *.o test#刪除.o和執行檔案
執行makefile檔案:
$ make 預設生一個檔案
$ make '目標名' #選擇性的編譯,比如make f1.o就只編譯那一部分
當工程中的檔名和makefile中的目標重名時,就會有偽目標. 執行make
命令時會發現提示目標檔案已經是最新將不被執行! 因為make命令只編譯改動的程式碼檔案,而不用完全編譯. 如果想讓makefile中某個命令永遠被執行可以在目標名前加上.PHONY:'目標名'
小插曲:
解決centos共享資料夾消失問題:(要在root視角下)
- 一般情況下共享資料夾在/mnt/hgfs資料夾下
- 首先前往Linux的/mnt/hgfs檔案下(若沒有就建立一個)
cd /mnt/hgfs
- 檢視是否共享成功
vmware-hgfsclient
- 安裝open-vm-tools並掛載(確保在此之前安裝了VMtools)
yum install open-vm-tools vmhgfs-fuse .host:/ /mnt/hgfs
- over
QT登場
但是呢,大型工程我不用makefile了,因為之前我已經下好了QT並且配置好了環境。嘖嘖,果然,QT就是好用。
接下來借鑑 的文章來介紹一下QT的安裝吧!
如何使用QT呢?
首先開啟需要執行的工程的目錄,只有.cpp和.h檔案,如圖所示:
然後執行Terminal,輸入
qmake -project
此時可以檢視一下目錄,它多了什麼。
然後再輸入
qmake
可再檢視一次目錄
然後輸入
make
此時檢視目錄就會發現,誒?出現了一個沒有後綴的檔案。直接./檔名就能直接執行。
這個test.cpp為輸出當前系統時間:
#include <iostream>
#include "test.h"
#include <ctime>
#include <string>
using namespace std;
int main(){
time_t timep;
time(&timep);
char tmp[64];
strftime(tmp,sizeof(tmp),"%Y-%m-%d %H:%M:%S",localtime(&timep));
string time=tmp;
cout<<time;
return 0;
}
執行結果為:
另外,在文章裡插個圖片怎麼這麼費勁呢!有道雲筆記也不能直接進行分享。反人類的功能設計!!!再見,浪費時間。