首先声明, 感谢九哥的帮助,因为从来没写过makefile, 所以一直是手动编译,

然后有一次写了三个文件, 需要编译, 而我只编译了一个文件, 所以一直出错, 九哥告诉我用makefile更方便, 可以学习一下

于是我就写了看了很多的blog, 然后向九哥要了这么个东西, 据说还有可以生成的工具

###########################################
#Makefile for simple programs
###########################################
#INC 是你项目包含的目录
INC=
#LIB是你需要链接的库
LIB= -lpthread
#CC是一个变量名 可以随便起,这里代表你的编译器
CC=g++
#LINK是链接的程序
LINK=g++
#LDFLAGS是链接的选项
LDFLAGS=
#CC_FLAG 是编译选项
CC_FLAG=-Wall -m64 # PRG=操作符重载, 这里是目录名字
PRG=aa
# 这里是空格隔开, 不能是逗号,需要注意
# root@corleone:/opt/code/testC++/aa# ls
# makefile mytime0.cpp mytime.h usertime0.cpp
# 上面这是目录下的文件, 那需要写几个.o的文件呢? 就这么写
OBJ=mytime0.o usertime0.o #当你make 后 编译器会去找 $(XXXX):$(xxxx) 的那一行
#你会发现它下面是一个 table缩进, table缩进 表示要执行那个命令
#然后编译器会查看 "-o $@" 后面的目标有没有生成或者更新,没有就重新编译那个目标文件
#比如这里$(OBJ)是各种.o文件, 那么就会先编译这些.o文件 会去执行.cpp.o:下面的缩进命令 $(PRG):$(OBJ)
$(CC) $(INC) $(LIB) -o $@ $(OBJ) #.SUFFIXES表示后缀名
#这里表示要把INC下面的所有后缀是cpp或者c的编译成.o文件
.SUFFIXES: .c .o .cpp
.cpp.o:
$(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o .PRONY:clean
clean:
@echo "Removing linked and compiled files......"
rm -f $(OBJ) $(PRG)
###########################################
#Makefile for simple programs
###########################################
#INC 是你项目包含的目录
INC=
#LIB是你需要链接的库
LIB= -lpthread
#CC是一个变量名 可以随便起,这里代表你的编译器
CC=g++
#LINK是链接的程序
LINK=g++
#LDFLAGS是链接的选项
LDFLAGS=
#CC_FLAG 是编译选项
CC_FLAG=-Wall -m64 PRG=threadpooltest
OBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o #当你make 后 编译器会去找 $(XXXX):$(xxxx) 的那一行
#你会发现它下面是一个 table缩进, table缩进 表示要执行那个命令
#然后编译器会查看 "-o $@" 后面的目标有没有生成或者更新,没有就重新编译那个目标文件
#比如这里$(OBJ)是各种.o文件, 那么就会先编译这些.o文件 会去执行.cpp.o:下面的缩进命令 $(PRG):$(OBJ)
$(CC) $(INC) $(LIB) -o $@ $(OBJ) #.SUFFIXES表示后缀名
#这里表示要把INC下面的所有后缀是cpp或者c的编译成.o文件
.SUFFIXES: .c .o .cpp
.cpp.o:
$(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o .PRONY:clean
clean:
@echo "Removing linked and compiled files......"
rm -f $(OBJ) $(PRG) ###########################################
#这里举个复杂的例子
########################################### # 先找到$(XXXX):$(xxxx)
# 去找"-o $@" 后面的目标有没有生成或者更新,有就重新编译那个目标
# "-o $@" 后面所有的目标都好了就开始链接主程序了
# 编译和链接都需要一些选项
# >> output表示输出重定向到文件,这样出错了比较好查找
all_objs= xxx1.o ../xxx2.o ../../xxx3.o
#all_libs是链接的库, -L指定库的目录, -l指定库的名字
all_libs=-L../../sourceapp/qmarket/xykjclient/ -lMarketApi -lACE
#$(target): $(all_objs)
# $(LINK) $(LDFLAGS) -o $@ $(all_objs) $(all_libs) $(LIB) >> output #你可以自己加一些选项 比如下面的test 你在命令行 执行 make test,他就会执行那个缩进的命令
test:
@echo "this is test"

c++ 的makefile文件实例的更多相关文章

  1. Makefile文件学习总结

    Makefile文件相当于是一种脚本编程语言,目的是实现自动化编译.编写makefile文件的过程中可以使用变量.控制结构和函数等一般编程语言的特性. Makefile文件的组成内容.makefile ...

  2. [转]makefile文件的编写规则及实例

    http://xueqi.iteye.com/blog/1567866   1.一个简单的makefile例子   假设一个程序有两个文件file1.c,file2.c,每个文件都包含head.h,生 ...

  3. 使用automake等命令自动生成Makefile文件 (转载)

    使用automake等命令自动生成Makefile文件   Linux下编程时,为了方便编译,往往使用Makefile文件自动完成编译,但是Makefile文件本身的书写十分复杂,规则很多.好在Lin ...

  4. Linux内核Makefile文件(翻译自内核手册)

    --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 Thi ...

  5. makefile基础实例讲解 分类: C/C++ 2015-03-16 10:11 66人阅读 评论(0) 收藏

    一.makefile简介 定义:makefile定义了软件开发过程中,项目工程编译链.接接的方法和规则. 产生:由IDE自动生成或者开发者手动书写. 作用:Unix(MAC OS.Solars)和Li ...

  6. 教会你如何编写makefile文件

    最近一直在学习makefile是如何编写的.当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的 ...

  7. 怎样写Makefile文件(C语言部分)

    本文摘抄自"跟我一起写Makefile ",只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器. 原文请看这里:http://wiki.ubuntu.org. ...

  8. 工程管理之makefile与自动创建makefile文件过程

    (风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的 ...

  9. 如何编写makefile文件

    最近一直在学习makefile是如何编写的.       当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make ...

随机推荐

  1. Git 工具 - 凭证存储

    凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...

  2. angular的uiRouter服务学习(3)

    本篇接着上一篇 angular的uiRouter服务学习(2) 继续讲解uiRouter的用法 本篇主要讲解uiRouter的多个命名的视图 我们可以给ui-view元素添加ui-view的值来给它命 ...

  3. C++ pair(对组)用法

    类模板:template <class T1, class T2> struct pair 参数:T1是第一个值的数据类型,T2是第二个值的数据类型. 功能:pair将一对值组合成一个值, ...

  4. 《深入应用C++11:代码优化与工程级应用》开始发售

    我的新书<深入应用C++11:代码优化与工程级应用>已经开始在华章微店发售了,下面是链接. 京东发售链接 china-pub发售链接 亚马逊发售链接 天猫商城发售链接 适用读者:C++11 ...

  5. C++类成员函数

    c++的两大特色是多态和模板.其中多态是通过继承和虚函数来实现的,其中虚函数是通过每个对象里面的虚表来实现的.如果这个对象的类有虚函数,那么这个类就有一张虚表,存的是每个虚函数的入口地址,而这个类的每 ...

  6. Centos crontab定时任务

    CRONTAB是一个用于设置周期性被执行的任务的工具,有了它,我们就可以从定时工作中解放出来. 一 : 检查CRONTAB服务 1. 检查CRONTAB工具是否已经在主机上安装 : crontab - ...

  7. 【Bootloader】探究bootloader,分析u-boot源码

    Preface 之前也发表过关于<Bootloader启动过程分析>的文章,但是内容表达得比较抽象,大多是文字叙述,所以这里从系统和代码的角度来深入分析bootloader的启动过程. 工 ...

  8. Mac下更改Python pip的源

    步骤 ➜ ~ mkdir .pip ➜ ~ cd .pip ➜ .pip touch pip.conf ➜ .pip vi pip.conf 其中pip.conf的内容为: [global] inde ...

  9. 推荐20款JavaScript框架给前端开发者

    下面,我们给大家提供了一个用于 HTML5 开发的各种用途的 JavaScript 库列表.这些框架能够给前端开发人员提供更好的功能实现的解决方案.如果你有收藏优秀的框架,也可以在后面的评论中分享给我 ...

  10. Excel工作记录表制作

    前言:我们一天中的工作可能特别忙.事情特别多,这时候你就要像CPU一样去调度.去执行任务,但总要有个地方记录你的执行情况,这就需要我们自己去记录和管理了,下面是使用excel的简单管理记录方式,下图是 ...