Makefile學習(二)[第二版]

復雜實例

#示例1:在上一個示例的基礎上再增加一個可執行文件03test[修改之處已標紅]

.PHONY:?clean?all?

?

CC?=?gcc?

CFLAGS?=?-Wall?-g

BIN?=?01test?02test?03test

SOURCES?=?$(BIN:=.c)

OBJECTS?=?$(BIN:=.o)

?

all:?$(BIN)

?

01test:?01test.o

02test:?02test.o

03test:?03test.o

?

.c.o:

????$(CC)?$(CFLAGS)?-c?$<?-o?$@

?

clean:

????-rm?-rf?$(BIN)?$(OBJECTS)

?

#示例2:在示例1上為03test添加一個自編的頭文件pub.h[修改之處已標紅]

.PHONY:?clean?all?

?

CC?=?gcc?

CFLAGS?=?-Wall?-g

BIN?=?01test?02test?03test

SOURCES?=?$(BIN:=.c)

OBJECTS?=?$(BIN:=.o)

?

all:?$(BIN)

?

01test:?01test.o

02test:?02test.o

03test:?03test.o?pub.o

?

.c.o:

????$(CC)?$(CFLAGS)?-c?$<?-o?$@

?

clean:

????-rm?-rf?$(BIN)?$(OBJECTS)

?

一個比較復雜的綜合示例


//1 pub.cpp
int pub(int a,char *ch,int b)
{char c = ch[0];switch(c){case '+':return a+b;break;case '-':return a-b;break;case '*':return a*b;break;case '/':if (b != 0){   return a/b;}   else{   return -1;}break;default:return -1;break;}return 0;
}

//2 pub.h
int pub(int a,char *ch,int b);

//3 main.cpp
#include <iostream>
#include <stdlib.h>
#include "pub.h"
using namespace std;int main(int argc,char *argv[])
{if (argc < 4){   cerr << "error" << endl;return -1; }   cout << argv[1] << ' ' << argv[2] << ' ' << argv[3] << " = " << pub(atoi(argv[1]),argv[2],atoi(argv[3])) << endl;return 0;
}

#4?Mackfile

.SUFFIXES:.cpp?.o

?

CC=g++

SOURCE=main.cpp?pub.cpp

OBJC=$(SOURCE:.cpp=.o) #將.cpp文件全部替換為.o文件

EXEC=mytest

?

all:$(OBJC)

$(CC)?-o?$(EXEC)?$(OBJC)

?

.cpp.o:

$(CC)?-o?$@?-c?$<

?

clean:

rm?-rf?$(OBJC)



附-如果一條語句在執行Mackfile文件時,不想打印出來,則在其前面加上@符號

?

比較專業的Makefile編寫

#示例1

all:?myapp

?

#?Which?compiler

CC?=?g++?

?

#?Where?are?include?files?kept

INCLUDE?=?.

?

#?Options?for?development

FLAGS?=?-g?-Wall?-ansi

?

#?Options?for?release

#?CFLAGS?=?-O?-Wall?-ansi

?

.SUFFIXES:.cpp?.o

?

SOURCE?=?main.cpp?pub.cpp

OBJC?=?$(SOURCE:.cpp=.o)

EXEC?=?myapp

?

$(EXEC):?${OBJC}

$(CC)?-o?$(EXEC)?$(OBJC)?

?

.cpp.o:

$(CC)?-o?$@?-I$(INCLUDE)?$(FLAGS)?-c?$<

?

clean:

rm?-rf?$(OBJC)?$(EXEC)

?

?

#示例2-添加了install選項

all:?myapp

?

#?Which?compiler

CC?=?g++?

?

#?Where?to?install

INSTDIR?=?/usr/local/bin/

?

#?Where?are?inlude?files?kept

INCLUDE?=?.

?

#?Options?for?development

CFLAGS?=?-g?-Wall?-ansi

?

#?Options?for?release

#?CFLAGS?=?-O?-Wall?-ansi

?

.SUFFIXES:?.cpp?.o

?

SOURCE?=?main.cpp?pub.cpp

OBJECT?=?$(SOURCE:.cpp=.o)

EXEC???=?myapp

?

$(EXEC):?$(OBJECT)

????$(CC)?-o?$(EXEC)?$(OBJECT)

?

.cpp.o:

????$(CC)?-I$(INCLUDE)?$(CFLAGS)?-o?$@?-c?$<

?

clean:

????-rm?-rf?$(OBJECT)

?

install:?$(EXEC)

????@if?[?-d?$(INSTDIR)?]?;?then?\

????????cp?$(EXEC)?$(INSTDIR)?;?\

????????chmod?a+x?$(INSTDIR)/$(EXEC)?;?\

????????chmod?og-w?$(INSTDIR)/$(EXEC)?;?\

????????echo?"Installed?in?$(INSTDIR)"?;?\

????else?\

????????echo?"Sory,?$(INSTDIR)?does?not?exist."?;?\

????fi


轉載于:https://www.cnblogs.com/itrena/p/5927014.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259868.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259868.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259868.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機網絡asp視頻教程,輕輕松松學編程!ASP互動視頻教程

從2006年5月18日開始&#xff0c;PConline將與FIF聯合推出國內網上第一部互動視頻教程&#xff1a;《ASP互動視頻教程》。它預示著一個全新的自助學習時代的到來。盡管相較于傳統的圖文教程&#xff0c;以前的多媒體視頻課件優點非常明顯&#xff0c;但它仍然存在交互性差的缺點…

Oracle查詢和解鎖表

一些ORACLE中的進程被殺掉后&#xff0c;狀態被置為"killed"&#xff0c;但是鎖定的資源很長時間不釋放&#xff0c;有時實在沒辦法&#xff0c;只好重啟數據庫。現在提供一種方法解決這種問題&#xff0c;那就是在ORACLE中殺不掉的&#xff0c;在OS一級再殺。1.下面…

三維家可以導入別人的方案嗎_廣州深圳天津形位公差檢測三維缺陷檢測服務

形位公差檢測三維缺陷檢測服務標簽&#xff1a;形位公差檢測 三維缺陷檢測服務 三維缺陷檢測鑄造工藝是一種經濟實惠的毛坯成形方式&#xff0c;對于一些形狀復雜的零件更能顯示出它的經濟性。比如汽車發動機的缸體和缸蓋&#xff0c;船舶螺旋槳以及精致的藝術品等。本期案例的…

計算機缺失esul.dll,SceneUI.ES.dll

我該如何安裝從金山毒霸下載的DLL文件&#xff1f;一&#xff1a;1、從金山毒霸下載壓縮文件。2、將DLL文件解壓到電腦上的某個地方。3、把該文件跟要求使用它的程序放在同一路徑上。注意32位程序需要使用32位的DLL文件&#xff0c;64位程序需要使用64位的DLL文件。否則會出現0…

android+ import R錯誤

import android.R; 在開發過程中有時候eclipse自動導入的包&#xff0c;該包有時候會導致一些奇怪的錯誤&#xff0c;再次出現該問題的時候&#xff0c;把import android.R;刪掉。setContentView(R.layout.secondactivity); //不刪掉 import android R&#xff1b;就會報錯轉載…

一、后臺首頁index.php【dedecms后臺源碼分析】

后臺目錄dede目錄的所有問價的源碼分析 使用的dedecms的版本5.7&#xff08;2012-04-01更新&#xff09; 后臺登陸之后的首頁分析dede/index.php <?php /*** 管理后臺首頁** version $Id: index.php 1 11:06 2010年7月13日Z tianya $* package DedeCMS.Admin…

transferto 文件不存在_文件上傳時,MultipartFile.transferTo() 方法報 FileNotFoundException...

Spring Upload File 報錯FileNotFoundException環境&#xff1a;Springboot2.0.4JDK1.8內嵌 Apache Tomcat/8.5.321、前端代碼前端上傳網頁表單&#xff0c;enctype 和 input 的typefile 即可&#xff0c;使用單文件上傳舉例&#xff1a;圖片2、后端代碼RestControllerRequestM…

對“粘連”footer布局的思考和總結

經典的"粘連"footer布局 參考文章鏈接在文章末尾&#xff0c;簡單的語言總結如下&#xff1a; 經典的“粘連”footer布局就是。我們有一塊內容<main>。當<main>的高度足夠長的時候&#xff0c;緊跟在<main>后面的元素<footer>會跟在<main…

計算機函數公式一等獎怎么算,信息技術應用 用計算機畫函數圖象教案設計(一等獎)...

衛鵬展地區&#xff1a; 湖北省 - 黃岡市 - 英山縣學校&#xff1a;英山縣金鋪鎮金鋪中學 共1課時信息技術應用 用計算機畫函數圖象">信息技術應用 用計算機畫… 初中數學 人教2011課標版 1教學目標1&#xff0e;結合具體情境理解一次函數的意義&#xff0c;能結…

這樣去寫你的 HTML

昨天在 twitter 上說&#xff0c;怎么忍心把頁面寫得這么難用&#xff1f;是的&#xff0c;這個世界還有一群人等著我們創建出來的東西&#xff0c;可以讓他們的生活能過得更容易呢。比如那些需要讀屏軟件的用戶。作為一個前端&#xff0c;我們又怎么會忍心呢。之前就一直想寫這…

iframe懶加載_前端常見問題

原地址&#xff1a;https://blog.csdn.net/Mr_JavaScript/article/details/843110681. flex布局&#xff1a;又叫做彈性布局任何一個容器都可以指定flex布局&#xff0c;如display:flex 或 display:inline-flex注意&#xff1a;設置了flex布局以后&#xff0c;子元素的float&am…

手機運行服務器無響應,《最強蝸牛》服務器無響應怎么辦 服務器無響應解決方法...

導讀最強蝸牛服務器無響應怎么辦&#xff1f;本作在今日迎來了正式的公測&#xff0c;這會導致大批量的玩家同時涌入進來&#xff0c;而服務器也因此而遭受到了非常大的符合&#xff0c;所以會導致后續加入進來的玩家出現服務器無響應進不去的現象。下面就為大家帶...最強蝸牛服…

Android 開源框架Universal-Image-Loader學習

Android 開源框架Universal-Image-Loader完全解析&#xff08;一&#xff09;--- 基本介紹及使用 Android 開源框架Universal-Image-Loader完全解析&#xff08;二&#xff09;--- 圖片緩存策略詳解 Android 開源框架Universal-Image-Loader完全解析&#xff08;三&#xff09;…

自己動手寫操作系統--個人實踐

近期開始看于淵的《自己動手寫操作系統》這本書&#xff0c;剛開始看就發現做系統的引導盤居然是軟盤&#xff01;心里那個汗啊&#xff01; 如今都是U盤了&#xff0c;誰還用軟盤。于是考慮用U盤。 于是開始下面步驟&#xff1a; 1、既然書上說給先要把軟盤做引導盤&#xff0…

蔻馳和mk哪個更大牌_mk和coach哪個好?mk和coach包包是一個檔次嗎?

說到包包&#xff0c;mk和coach可謂是輕奢界的兩大巨頭了。因此&#xff0c;兩個品牌的包包不可避免的會被經常拿來作比較。那么&#xff0c;從各個角度來講mk和coach那款包包更好呢&#xff1f;這兩款包包又有哪些本質上的區別呢&#xff1f;mk和coach哪個好價格對比大致上&am…

Linux 配置 swap 區

Linux 配置 swap 區 很多時候我們需要配置 swap 主要的原因是物理內存太貴了&#xff0c; 服務器也是一樣&#xff0c; 當內存不夠用時&#xff0c; 系統會卡死&#xff0c; 因此我們寧愿犧牲一點性能也要讓系統正常運行。 當然&#xff0c; 在系統物理內存足夠的條件下&#x…

嵊州職教中心計算機多少分數,嵊州中考考試分數線

每年六月份最熱鬧的大概就是中考了&#xff0c;很多人都想提前知道中考分數線&#xff0c;下面是百分網小編整理的嵊州2017年中考考試分數線&#xff0c;歡迎閱讀借鑒!嵊州2017年中考分數線2017年嵊州中考考試時間嵊州中考錄取情況1. 第一批 嵊州中學、馬寅初中學實驗班&#x…

12月和12年

剛剛撇了一眼&#xff0c;注冊博客園已經12年了。時間有時只是個數字&#xff0c;有沒有意義呢&#xff0c;自己去判斷啦。 像博客園這樣的技術社區&#xff0c;很是難得&#xff0c;雖然這個社區里.NET開發者才是一等公民。 我最喜歡的是它的博客系統的高度可Diy性。經常訪問我…

【2011-6】【奇數】

Description 鍵盤輸入一個奇數 P (P<50)&#xff0c;其個位數字不能是5&#xff0c;求一個整數 S&#xff0c;使 P*S 1111...1&#xff0c;即乘積各位都是1。要求用兩行依次輸出以下結果: ①S的全部數字&#xff1b;②乘積中數字1的個數。 例&#xff1a;輸入P3&#xff0c…

sql加上唯一索引后批量插入_阿里大佬總結的52條SQL語句性能優化策略,建議收藏...

你知道的越多&#xff0c;不知道的就越多&#xff0c;業余的像一棵小草&#xff01;你來&#xff0c;我們一起精進&#xff01;你不來&#xff0c;我和你的競爭對手一起精進&#xff01;編輯&#xff1a;業余草cnblogs.com/SimpleWu/p/9929043.html推薦&#xff1a;https://www…