Linux開發工具之Makefile(下)

来源:http://www.cnblogs.com/baiyifan/archive/2016/03/15/5279229.html
-Advertisement-
Play Games

二、Makefile(下)01.make常用內嵌函數函數調用  $(function arguments)$(wildcard PATTERN)  當前目錄下匹配模式的文件  例如:src=$(wildcard *.c)$(patsubst PATTERN,REPLACEMENT,TEXT)  模式


二、Makefile(下)01.make常用內嵌函數函數調用  $(function arguments)$(wildcard PATTERN)  當前目錄下匹配模式的文件  例如:src=$(wildcard *.c)$(patsubst PATTERN,REPLACEMENT,TEXT)  模式替換函數  例如:$(patsubst %.c,%.o,$src)  等價於$(src:.c=.o)shell函數  執行色狼來了命令  例如:$(shell ls -d */)#lsMakefile02.多級目錄Makefile#touch main.c#mkdir bll(應用邏輯層)#mkdir ui(界面層)#mkdir dal(數據邏輯層)#cd ui#touch ui.h ui.c#cd ..#cd dll#touch dal.h dal.c#cd ..#cd bll#touch bll.h bll.c#lsbll dll Makefile ui#vi Makefile (有二級目錄)CC = gccCFLAGS =-Wall -gBIN = mainSUBDIR = $(shell ls -d */)(當前目錄下的所有文件夾)ROOTSRC = $(wildcard *.c)(當前目錄下的所有*.c文件)ROOTOBJ = $(ROOTSRC:%.c=%.o)SUBSRC = $(shell find $(SUBDIR) -name '*.c')SUBOBJ = $(SUBSRC:%.c=%.o)$(BIN):$(ROOTOBJ) $(SUBOBJ) $(CC) $(CFLAGS) -o $(BIN) $(ROOTOBJ) $(SUBOBJ).c.o: $(CC) $(CFLAGS) -o $< -o $@clean: rm -f $(BIN) $(ROOTOBJ) $(SUBOBJ)#ls -d */(列出該目錄下的文件夾都列出來)#find bll dll ui -name '*.c'bll/bll.cdll/dll.cui/ui.c#make#makeclean#ls03.Makefile可能生成多個可執行文件,如何只生成一個可執行文件#vi MakefileSUBDIRS = test1 test2.PHONYL:default all clean $(SUBDIRS)default:allall clean: $(MAKE) $(SUBDIRS) TARGET=$@$(SUBDIRS): $(MAKE) -C $@ $(TARGET)#cd . ./test1#vi MakefileCC = gccBIN = test1OBJS = test1.o.PHONY: all clean printall:print $(BIN)print @echo "----make all in $(PWD)----"$(BIN):$(OBJS) $(CC) $(OBJS) -o $@%.o:%.c $(CC) $(OBJS) -o $@%.o:%.c $(CC) -c $<clean: @echo "---- make clean in $(PWD) ----" rm -f $(BIN) $(OBJS)#cd ../test2#ls#vi MakefileCXX = g++(實現C++的編譯)BIN = test2OBJS = test2.oCPPFLAGS=-Wall -g.PHONY: all clean printall:print $(BIN) @echo "---- make all in $(PWD) ----"$(BIN):$(OBJS) $(CXX) $(OBJS) -o [email protected]:%.cpp $(CXX) -c $<clean: @echo "---- make clean in $(PWD) ----" rm -f $(BIN) $(OBJS)如果子目錄下存在文件夾,也可以採用與頂層目錄的Makefile類似的寫法,實現多級目錄,可擴展的方法。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • oracle表的管理
  • 年後一次系統升級後,監控資料庫的工具DPA發現資料庫的Total Wait時間突然飆增,如下截圖所示,資料庫的總體等待時間對比升級前飆增了非常多 另外就是發現出現了較多的等待事件,主要有latch: cache buffers chains、 latch: shared pool 、db file ...
  • 三、gdb調試(上)01.gdb:gdb是GNU debugger的縮寫,是編程調試工作。功能: 啟動程式,可以按照用戶自定義的要求隨心所欲的運行程式; 可讓被調試的程式在用戶所指定的調試的斷點處停住(斷點可以是條件表達式); 當程式停住時,可以檢測此時程式中所發生的事; 動態改變數程式的執行環境。
  • Qt時常發生的錯誤總結 1,代碼有問題,但是它卻告訴你別的地方~比頭文件不能讀取,賊蛋疼! 2,庫文件問題,會出現一大堆錯誤,這個時候就要好好檢查庫文件了。 3,版本問題,Qt版本升級時有些東西會變化,所以要及其註意你寫的代碼不一定在這種版本上好使,到另一版本上就行!
  • 一、RPM包校驗 [root@localhost Packages]# rpm -V 已安裝的包名 #選項: #-V校驗指定RPM包中的文件(verify) [root@localhost Packages]# vim /etc/httpd/conf/httpd.conf---> 對包的配置文件進行...
  • rror:Flash Download Failed-"Cortex-M3"出現一般有兩種情況:   1.SWD模式下,Debug菜單中,Reset菜單選項(Autodetect/HWreset/sysresetReq/Vectreset)預設是AutoDetect,改成SysResetReq即可。
  • 之前一直嘗試使用“橋接”的方法,但是一打開虛擬機,本機windows就斷網。最後不得不換種方法,還好嘗試了很多遍終於使用NAT設置成功的聯網了。 說明:本機windows連接的是無線網。 1.檢查自己的windows系統的VMware DHCP Service 和 VMware NAT Servic
  • 裝載系統的時候只開啟了22埠。結果再裝完Nginx+php+mysql 後不能訪問網站。 iptables -L -n 查看防火牆設置發現沒開啟80埠 由於Linux防火牆預設是關閉的。可以用兩種方式,一個是關閉防火牆,另一個就是讓防火牆開放這個埠。 關閉防火牆命名: service ipta
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...