1. 程式人生 > >Makefile多目錄原始檔

Makefile多目錄原始檔

在很多C/C++工程中原始檔放到一個目錄下面,標頭檔案放在另一個目錄下面,這樣生成的目標檔案(.o檔案)直接放在原始檔相同的資料夾下。但是對於多個目錄中都存在原始檔的情況下,無論將目標檔案放在一個目錄下還是放在和對應原始檔相同的目錄下都不像所有原始檔在一個目錄下那樣簡單。下面取makefile中的一部分來說明,該makefile是將目標檔案放在和對應的原始檔相同的目錄下。

CXXFLAGS := -std=c++11 -g -Wall

CXX := g++
SRC1 =  $(wildcard ./*.cpp) 
SRC2 = $(wildcard ./table/*.cpp) 
SRC3 = $(wildcard ./checker/*.cpp)
OBJ1 = $(patsubst %.cpp,%.o,$(SRC1))
OBJ2 = $(patsubst %.cpp,%.o,$(SRC2))
OBJ3 = $(patsubst %.cpp,%.o,$(SRC3))
src2 = ./table/
src3 = ./checker/
TARGETS := main
$(TARGETS) : $(OBJ1) $(OBJ2) $(OBJ3)
@$(CXX) $^ $(LIB) -o
[email protected]

@echo "prepare successfully!"
%.o:$(src2)/%.cpp 
@echo "prepare Compile "
@$(CXX) -c $< $(CXXFLAGS) $(INCLUDE) -o [email protected]
@echo "Compiled "$<" successfully!"
%.o:$(src3)/%.cpp 
@echo "prepare Compile "
@$(CXX) -c $< $(CXXFLAGS) $(INCLUDE) -o [email protected]
@echo "Compiled "$<" successfully!"
%.o:%.cpp 
@echo "prepare Compile "
@$(CXX) -c $< $(CXXFLAGS) $(INCLUDE) -o
[email protected]

@echo "Compiled "$<" successfully!"


.PHONY : clean
clean:
@-rm $(TARGETS) $(OBJ1) $(OBJ2) $(OBJ3) -f
@echo "Cleanup complete!"

相關推薦

Makefile目錄原始檔

在很多C/C++工程中原始檔放到一個目錄下面,標頭檔案放在另一個目錄下面,這樣生成的目標檔案(.o檔案)直接放在原始檔相同的資料夾下。但是對於多個目錄中都存在原始檔的情況下,無論將目標檔案放在一個目錄下還是放在和對應原始檔相同的目錄下都不像所有原始檔在一個目錄下那樣簡單。下面

[Makefile]目錄Makefile寫法

16px 間隔 ews pro images include 先來 文章 status 最近需要寫一個測試程序,這個測試程序需要集成一些功能,寫在同一個文件看上去很不好,多個文件的Makefile又不是很熟,於是分享下面這篇文章 轉自:http://blog.csdn.ne

從入門到製作編譯目錄檔案的makefile

makefile作用:用於管理編譯檔案。通常編譯linux專案時,有長達幾千個檔案,在某次更改其中一個檔案的話,若要將整個工程全部編譯,太繁瑣耗時。引入makefile,它依據檔案更新的時間,從而只編譯改動過的檔案。 1 makefile名詞解釋: 目標:指編譯後生成檔案

原始檔編譯--makefile

main.c 中引入one.h 和two.h兩個標頭檔案,one.c two.c 分別實現兩個標頭檔案中定義的函式 有兩種方式編譯執行該程式, 一:手動單獨編譯 gcc -c one.c g

目錄Makefile 的編寫方法

1 make分中預定義變量表$* 不包含副檔名的目標檔名稱。$+ 所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。$< 第一個依賴檔案的名稱。$? 所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。[email pr

原始檔編譯成一個模組注意Makefile 書寫

多個原始檔編譯成一個模組,不正確的Makefile 會使printk 不能輸出資訊。 細細觀測,發現是對Makefile 語法未深刻理解所致。 下面附上一例說明問題。 -----------------------------------------------------

原始檔進行編譯,即 makefile 的編寫

makefile的好處是防止原始檔的重複編譯 比如有好多個原始檔,某天對其中一個原始檔進行修改,如果不寫makefile的話,需要將整個工程的所有檔案重新編譯一遍,非常麻煩,有了makefile,說明了每個原始檔的依附關係,當某個原始檔改變的時候只需重新編譯一下關聯的原始

目錄Makefile(庫及分層目錄)

本文程式碼雖簡單,但涉及比較複雜的各種呼叫關係,欲研究者需有耐心及清醒頭腦。 切切! 背景交待: 1、正在移植U-Boot,並對其原始碼進行了一些分析,感覺它的Makefile十分強勁; 2、以前寫的Makefile模板不合適多層目錄; 3、研究一下多個庫之間相互

一點一點學寫Makefile(6)-遍歷當前目錄原始檔及其子目錄下原始檔

有時候,我們在開發的時候需要將本次工程的程式碼分成多個子目錄來編寫,但是在Makefile的編寫上卻是個問題,下面我就教大家怎麼構建帶有子資料夾的原始碼目錄的自動掃描編譯 下面這張圖是我的檔案樹 這裡面src目錄下是我的原始碼,我將功能程式碼分成了三個子模組,分別為tes

[linux]一個通用驅動Makefile-V2-支援編譯目錄

[toc] --- ## 前言 該 Makefile 已經通過基於核心 **Linux5.4** 版本驗證通過。 因為編寫這通用驅動 Makefile 時遇到了標頭檔案指定路徑失敗的問題。使用過 **ccflags-y 、INCDIR 、EXTRA_CFLAGS 、-L** 等等引數都無效。就是因為我使

簡易cmake文件目錄工程模板

lis flags sage ext build iostream .sh cmake lease   今天心血來潮,想在服務器上試試寫libevent的工程是什麽感受,那第一步就是學會怎麽用cmake建工程,之前也沒接觸過cmake,然後一上午,比較懵逼,下午看實驗室哥們

Rsync+sersync目錄同步

rsync sersync Rsync+sersync多目錄同步 源服務器:192.168.1.100 目標服務器:192.168.1.200,把源服務器的/data/book 和/data1/book 同步到目標服務器的/data/book 和/data1/book第一部分:在目標服務器192

vsftpd 使用虛擬用戶及單用戶目錄的配置

vsftpd使用虛擬用戶 vsftpd使用虛擬用戶及單用戶多目錄 vsftpd使單用戶多目錄 vsftpd 使用虛擬用戶及單用戶多目錄的配置 安裝vsftpd yum -y install pam pam-devel db4 db4-tclyum -y install vsftpd 配置vsftp

Confluence 6 管理目錄

有一個 class http enc order 服務 spl con 其他 這個頁面描述了如果在 Confluence 中定義了多個目錄服務器將會發生什麽樣的情況。例如你可能會有一個內部目錄服務器同時你還可能有連接一個 LDAP 外部服務器或者使用多種類型的其他用戶目錄。

Confluence 6 管理目錄概述

Confluence這裏是有關目錄順序如何影響處理流程:目錄中的順序是被用來如何查找用戶和組的順序。修改用戶和用戶組將會僅僅應用到應用程序具有修改權限的第一個目錄中。配置目錄載入順序你可以修改在 Confluence 中定義的目錄順序。從 Confluence 幹理由控制臺中選擇 用戶目錄(User Dire

Apache目錄端口

aabb shadow watermark 新的 編輯 狀態 之一 服務器日誌 mar 簡介:Apache是世界使用排名第一的Web服務器軟件。它可以運行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠並且可通

linux 核心模組程式設計之編譯原始檔(三)

編譯擁有多個原始檔的核心模組的方式和編譯一個原始檔的方式差不多,我們先來看下我們需要的檔案都有哪些。 首先是main.c檔案 #include <linux/module.h> #include <linux/init.h> MODULE_LICENSE

使用pyinotify 監控資料夾目錄是否有新檔案生成內容是否變化

檢測一個目錄A是否有遠端服務傳過來的檔案,有的話呼叫相關服務去解析或者處理此檔案,處理完生成處理報告結果到另一個目錄B,這就需要同時監控A、B兩個目錄是否有新檔案生成,A生成了新檔案就本地處理,B生成了新檔案要傳送出去。 找到了pyinotiy這個模組,Pyinotify是一個簡單而有用的P

【菜雞筆記001】 在工程中執行原始檔

首先建一個空工程; 選擇選項卡中工程選項(啊嘞,這個畫的好像有點醜); 新建一個頭檔案; 使用“#include “stdio.h””格式,不能用<stdio.h>哦,如果下面有函式的話,在這裡需要函式宣告,宣告方式和在單個檔案寫程式中的宣告相同;

快速在VSCode中建立檔案目錄C++專案

對於輕量級的VSCode編輯器,我想像使用那些IDE一樣,通過簡單的幾步就能構建出自己的專案檔案樹,類似於下面的結構。所以特地寫了一個指令碼,用於自動建立一個基本的專案。 . ├── Headers │ └── test.hpp ├── makefile ├