Makefile錦集(持續更新中)
1、為每個原始檔生成一個可執行程式
使用場景:目錄下的所有原始檔都能生成可執行程式。如在做《C++ Primer》練習時,每個練習都是一個獨立的小程式,不必為每個練習編寫一個Makefile,也不必為每個練習執行g++編譯。
CC :=gcc
CFLAGS := -g -Wall
SOURCES := $(wildcard *.c)
TARGETS := $(patsubst %.c,%,$(SOURCES))
#define a function
define MAKE_EACH_SRC_BIN
$1:$1.c
$(CC) $(CFLAGS) $< -o [email protected]
endef
all:$(TARGETS)
$(foreach target,$(TARGETS),$(call MAKE_EACH_SRC_BIN $(target)))
clean:
rm -rf $(TARGETS)
2、通用性較強的Makefile
使用場景:可以應對大多數型別的工程,包含多個目錄的工程,不必為每個目錄編寫一個Makefile。自動生成標頭檔案依賴,不必因改變標頭檔案而make clean。
GROOT :=$(shell pwd)
PROGRAM := iked
SRCDIRS := . ./isakmp ./ikev1 ./crypto
SRCEXTS := .c .cc
CPPFLAGS := -Wall -Werror -g -m32
CFLAGS :=
CFLAGS +=
CXXFLAGS := -I/usr/local/openssl/include
CXXFLAGS += -I$(GROOT)/ -I$(GROOT)/isakmp -I$(GROOT)/crypto -I$(GROOT)/ikev1
LDFLAGS := -lpthread -L/usr/local/openssl/lib -lcrypto -ldl
LDFLAGS += -m32
#CC = gcc
#CXX = g++
#CC = $(CXX)
#CFLAGS = $(CXXFLAGS)
#RM = rm -f
SHELL = /bin/sh
SOURCES = $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
OBJS = $(foreach x,$(SRCEXTS), $(patsubst %$(x),%.o,$(filter %$(x),$(SOURCES))))
DEPS = $(patsubst %.o,%.d,$(OBJS))
.PHONY : all objs clean cleanall rebuild
all : $(PROGRAM)
%.d : %.c
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.C
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.cc
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.cpp
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.CPP
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.c++
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.cp
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
%.d : %.cxx
@$(CC) -MM -MT ${@:%.d=%.o} -MD $(CXXFLAGS) $< -o [email protected]
objs : $(OBJS)
%.o : %.c
$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o [email protected]
%.o : %.C
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
%.o : %.cc
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
%.o : %.cpp
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
%.o : %.CPP
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
%.o : %.c++
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
%.o : %.cp
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
%.o : %.cxx
$(CXX) -c $(CPPFLAGS) $(CXXFLAGS) $< -o [email protected]
$(PROGRAM) : $(OBJS)
ifeq ($(strip $(SRCEXTS)), .c) # C file
$(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
else # C++ file
$(CXX) -o $(PROGRAM) $(OBJS) $(LDFLAGS)
endif
-include $(DEPS)
rebuild: clean all
clean :
@$(RM) $(OBJS) $(DEPS)
cleanall: clean
@$(RM) $(PROGRAM) $(PROGRAM).exe
相關推薦
Makefile錦集(持續更新中)
1、為每個原始檔生成一個可執行程式使用場景:目錄下的所有原始檔都能生成可執行程式。如在做《C++ Primer》練習時,每個練習都是一個獨立的小程式,不必為每個練習編寫一個Makefile,也不必為每個練習執行g++編譯。CC :=gcc CFLAGS := -g -Wal
atcoder題目合集(持續更新中)
Choosing Points 數學 Integers on a Tree 構造 Leftmost Ball 計數dp+組合數學 Painting Graphs with AtCoDeer tarjan+polya Building Cubes with AtCoDeer 列舉 AtCo
codeforces題目合集(持續更新中)
C F 280 C
【題解】洛谷各種字串問題合集(持續更新中)
洛谷 P1449 字尾表示式 這道題需要手動模擬棧的操作。讀入字元,當字元不為終止字元@時,如果讀入的是數字就用now記錄下它的值,如果讀入的是 . 就將得到的數字值放到棧頂,並清空now。當讀到運算子時,就拿棧頂元素下面的第一個元素和棧頂元素進行加減乘除的操作,並將棧頂清
HTML5+Bootstrap後臺系統框架集(持續更新中……)
HTML5+Bootstrap後臺系統框架集(更新時間:2017年1月8日。持續更新中……)科普:Bootstrap (Web框架):Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。
PTA|團體程式設計天梯賽-練習題目題解錦集(C/C++)(持續更新中……)
PTA|團體程式設計天梯賽-練習題目題解錦集(持續更新中) 實現語言:C/C++; 歡迎各位看官交流討論、指導題解錯誤;或者分享更快的方法!! 題目連結:https://pintia.cn/problem-sets/994805046380707
PHP開發錯誤錦集(持續更新)
1、trait 命名問題。 問題:trait 裡定義的方法找不到 <?php namespace app\controllers; trait Example { public function example(); } class Foo { use Exampl
免費資料集下載(持續更新中...)
分門別類整理了一些網上的免費資料集,這是分類下載地址,希望能節約大家找資料的時間。歡迎資料達人加入QQ群 565136792 交流。 金融 交通 商業 推薦系統 醫療健康 影象資料 綜合影象 場景影象 Web標籤影象 人形輪廓影象 視覺文字識別影象 特定一類事物影象 材質紋理影象 物體分類影象 人臉影象 姿
IT(計算機/軟件/互聯網)專業詞匯寶典(持續更新中)
hub point charger 中國 mar asi lose 社區 less 1.Stack Overflow:http://stackoverflow.com/ .一個著名的IT技術的問答站點。全然免費。程序猿必知。2.programmer:程序猿3.e
git的常用語句(持續更新中)
文件 版本 reflog 使用 一個 更改 commit sta add mkdir learngit // 創建文件夾cd learngit //跳轉到指定文件夾pwd //顯示當前文件夾路徑git init //把這個目錄變成可管理的倉庫git add learngi
ASP.NET MVC5+EF6+EasyUI 後臺管理系統(1)-前言與目錄(持續更新中...)
編碼規範 圖標 pri log 任務 ros 部署 基本 form 開發工具:VS2015(2012以上)+SQL2008R2以上數據庫 您可以有償獲取一份最新源碼聯系QQ:729994997 價格 666RMB 升級後界面效果如下: 日程管理 http://
一句話題解(持續更新中)
ron noi rdquo 括號 出現 eps sof 單調性 滾動 8.1 bzoj 4720 noip2016 換教室 floyd預處理+期望(薛定諤的貓) bzoj 4318 OSU! 三次函數期望值 從一次、二次推得 8.2 bzoj 1076 狀壓+期望D
關於Yii2中的MVC中的視圖總結(持續更新中)
gif pre lis frontend dbo register front reg open 一、首先在控制器中,將處理好的數據發送給前臺: $this->layout = ‘base‘; 這裏填寫視圖的模板文件(可以不寫這行代碼,如果不寫,默認為views/la
java基礎知識匯總(持續更新中....)
方法區 管理 執行 中間 inter print method arch end 1.java四大特性:抽象、繼承、封裝,多態 構造函數: http://blog.csdn.net/qq_33642117/article/details/51909346
第11章—常用註解(持續更新中)
導入 rest class entity auto config cati param tee spring boot 系列學習記錄:http://www.cnblogs.com/jinxiaohang/p/8111057.html 碼雲源碼地址:https://gitee
golang開發常用開源項目工具(持續更新中)
golang開源項目 golang工具 本人在日常golang項目開發中,用到了一些第三方開源庫,大多都是優秀的開源項目,源碼值得認真閱讀研究。在此記錄用到的一些庫:解析配置文件go-ini https://github.com/go-ini/inigolang開發常用開源項目工具(持續更新中)
談談對事件的理解(持續更新中)
use 通過 行為 tlist 理解 scrip 創建 可能 有時 談談對事件的理解: 從前有一家人,我們稱為window家。window他其中有一個兒子叫事件。 -------------------------------------------------------
前端開發工程師從入門到精通學習過程及資源總結(持續更新中)
開發實戰 set dex 從入門到精通 main 知識 uno 基礎入門 易雲 職位名稱:前端開發工程師 學習概要:1、先了解基礎,html/css/JavaScript是基礎。html/css就是做靜態頁面的,javascript是做動態的。 2、學習框架:jQuery(
CS231N作業記錄(持續更新中)
ssi net tail 安裝ipython ipy 工作 href https 準備 參考資料:《 cs231n 課程作業 Assignment 1 》https://blog.csdn.net/zhangxb35/article/details/55223825 一
自動化運維之Ansible概述及Ansible部署|(持續更新中)
nss red hat 優秀 分發 程序 paramik and gho 統一 Ansible概述 由於互聯網的快速發展導致產品更新換代速度逐漸加快,運維人員每天都要進行大量的維護操作,仍舊按照傳統方式進行維護使得工作效率低下。這時,部署自動化運維就可以盡可能安全,高效地完