1. 程式人生 > >Linux學習筆記-Makefile優化之標頭檔案依賴

Linux學習筆記-Makefile優化之標頭檔案依賴

如果標頭檔案被更新,則包含了它的cpp檔案應該被重新編譯。

比如first裡面有個函式,main函式呼叫了first裡面的函式,那麼first.h變化了,main肯定要重新編譯

這裡有個知識點:

-MMD 【這是編譯器使用的選項】

g++/gcc 編譯xxx.cpp檔案時,可以提取裡面的標頭檔案

如下面的這個main.cpp原始碼:

#include "first.h"
#include "second.h"

#include <stdio.h>

int main() {
	firstPrint();
	secondPrint();
	printf("main called!\n");
	return 0;
}

他用了first.h和second.h

從這裡就可以看到了!!!!!main.o依賴main.cpp first.h second.h,這條

這裡介紹一個指令:

-include $(XXXX) 將所有的.d檔案包含進來

所有有下面這個Makefile


EXE=helloworld

CPP_SOURCES=$(wildcard *.cpp)
CPP_OBJECT=$(patsubst %.cpp, %.o, $(CPP_SOURCES))
DEP_FILES=$(patsubst %.o, %d, $(CPP_OBJECT))

$(EXE): $(CPP_OBJECT)
	g++ $(CPP_OBJECT) -o $(EXE)
	
%o: %.cpp
	g++ -c -MMD $< -o 
[email protected]
-include $(DEP_FILES) clean: rm -rf *.o *.d $(EXE)

執行截圖如下:


EXE=helloworld

CPP_SOURCES=$(wildcard *.cpp)
CPP_OBJECT=$(patsubst %.cpp, %.o, $(CPP_SOURCES))
DEP_FILES=$(patsubst %.o, %d, $(CPP_OBJECT))

$(EXE): $(CPP_OBJECT)
	g++ $(CPP_OBJECT) -o $(EXE)
	
%o: %.cpp
	g++ -c -MMD $< -o 
[email protected]
-include $(DEP_FILES) clean: rm -rf *.o *.d $(EXE)

相關推薦

Linux學習筆記-Makefile優化檔案依賴

如果標頭檔案被更新,則包含了它的cpp檔案應該被重新編譯。 比如first裡面有個函式,main函式呼叫了first裡面的函式,那麼first.h變化了,main肯定要重新編譯 這裡有個知識點: -MMD 【這是編譯器使用的選項】 g++/gcc 編譯xxx.cp

makefile 自動生成檔案依賴關係

在使用makefile 自動生成標頭檔案依賴是,大家多半使用了下面這個方法。 這個sed語句被稱之為 "上帝的符號",可讀性不言而喻。(PS:CSDN這個排版怎麼也搞不好,只能用圖片了。) gcc的 -MMD 選項可以自動生成帶有依賴規則的.d檔案,為建立標頭檔案依賴帶來

Linux學習筆記_shell程式設計環境變數配置檔案

shell程式設計之環境變數配置檔案 https://www.imooc.com/learn/361 簡介:本課程是《Tony老師聊shell》系列課程的第三篇,為你帶來常用的Linux環境變數配置檔案的使用。對環境變數配置檔案的功能進行了詳解, 然後又介紹了其他環境變數配置檔案,包括登

Linux學習筆記_shell程式設計運算子

shell程式設計之運算子 https://www.imooc.com/learn/355 **簡介:**本課程是《Tony老師聊shell——變數》課程的延續,主要介紹Linux shell程式設計基礎中的運算子。包括declare命令、數值運算方法和變數測試。 首先在declare

Linux學習筆記_shell程式設計變數

shell程式設計之變數 https://www.imooc.com/learn/336 **簡介:**本課程是《Linux達人養成計劃I》中第九章課程的延續,主要介紹Linux shell程式設計基礎中的變數。包括Bash變數的分類和各變數的詳細使用,如:使用者自定義變數、環境變數、語

ICTCLAS2016 linux C++版本 使用教程 Eclipse下開發C/C++程式檔案,庫檔案引用

歡迎使用NLPIR/ICTCLAS2014分詞系統 NLPIR分詞系統前身為2000年釋出的ICTCLAS詞法分析系統,從2009年開始,為了和以前工作進行大的區隔,並推廣NLPIR自然語言處理與資訊檢索共享平臺,調整命名為NLPIR分詞系統。張華平博士先後傾力打造十餘

Linux 學習筆記—程序通訊 訊號

2.4訊號 2.4.1 訊號的概念和機制 訊號是UNIX/Linux系統響應某些條件而產生的一個事件,接收到該訊號的程序會相應地採取一些行動。通常訊號是由一個錯誤產生的。但它們還可以作為程序間通訊或修改行為的一種方式,明確地由一個程序傳送給另一個程序。一個訊

Linux 學習筆記—程序通訊 訊息佇列、訊號量、共享記憶體的概念區別聯絡

2.5 訊息佇列(Message queues) 訊息佇列是核心地址空間中的內部連結串列,通過linux核心在各個程序直接傳遞內容,訊息順序地傳送到訊息佇列中,並以幾種不同的方式從佇列中獲得,每個訊息佇列可以用IPC識別符號唯一地進行識別。核心中的訊息佇列是通過

linux下程式設計中用到的檔案的一些定義及函式進行解譯(本人使用過程中用到過的不明白的定義及函式)

1、typedef unsigned long int pthread_t; 型別定義: typedef unsigned long int pthread_t; //come from /usr/include/bits/pthreadtypes.h 用途:pthread_t用於宣

基本知識檔案(一) stdlib.h && conio.h

https://wenda.so.com/q/1367031948061742  來自360問答 stdlib.h   stdlib 標頭檔案裡包含了C語言的一些函式   該檔案包含了的C語言標準庫函式的定義   stdlib.h裡面定義了五種型別、一些巨集和通用工具函式。型別例如si

Linux中C/C++編譯新增檔案和庫路徑方式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C++檔案的變化

C中的標頭檔案 在C語言中,當用到標準輸入輸出時(實際上大多數情況都需要用到),需要包含標頭檔案<stdio.h>;當用到字元陣列相關操作時,需要包含標頭檔案<string.h>;當需要用到數學函式相關操作時,需要包含標頭檔案<math.h>等等。例如

nbr_table原始碼檔案

學完contiki的核心之後,想重點學一學路由協議RPL。奈何資料實在太少,網上大部分都講只是講個大概而已,很多具體細節都沒有,我也是很苦惱。基本上都是靠《基於IP的物聯網架構、技術與應用》還有這位博主http://cgbluesky.blog.163.com/裡翻譯的關於RPL的標準手冊RF

演算法筆記-6.8 algorithm檔案下的常用函式

#include<stdio.h> #include<algorithm> #include<string> using namespace std; int main(){ string str="abcdefgh"; reverse(str.begin()

深度學習pytorch程式碼各種常見檔案

1. from __future__ import print_function  在開頭加上from __future__ import print_function這句之後,即使在python2.X,使用print就得像python3.X那樣加括號使用。python2.X

成為C++高手檔案與條件編譯

但現在看起來真不爽,main.c依賴的檔案不能在工程中管理,要修改那些檔案的話麻煩大了。如何既能分成多個檔案又能在工程中看到呢?可以,使用標頭檔案(h檔案)。 標頭檔案中只放那些不產生記憶體佔用的程式碼,比如定義結構(定義結構不會產生記憶體分配,只有用結構

linux和其他交叉編譯器的檔案搜尋路徑!@

Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.3-4ubuntu5' --with-bugurl=file:///usr/shar

linux 下找不到系統檔案

在把windows下的程式移值linux下的時候遇到了找不到一個系統標頭檔案(errno.h),在windows下編譯正常。難道是系統包含目錄沒有這個檔案,去/usr/include上一找,找到了!!!細看一下包含是這樣寫的: #include <errno.h &

linux下 C++的標準庫檔案所在目錄

其中以.h為字尾的標頭檔案在這個目錄下的backward資料夾裡 查詢檔案的相應命令:比如要找iostream,可以使用locate命令,如locate iostream 也可以使用find命令,find命令比locate複雜一點 關於 Linux下或

linux構建工具鏈安裝核心檔案的時候提示出錯

如下,安裝核心標頭檔案的時候輸入命令: make ARCH=i386 INSTALL_HDR_PATH=$SYSROOT/usr/headers_install提示內容如下: scripts/kcon