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