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.mzph.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…