博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile简单的配置
阅读量:4347 次
发布时间:2019-06-07

本文共 1450 字,大约阅读时间需要 4 分钟。

一、文件配置目录

1)原目录

demo

   ├── Makefile

   ├── demo.cpp

   ├── demo.hpp

   └── main.cpp

2)make之后的目录

demo

├── Makefile

├── demo.cpp

├── demo.hpp

├── demo.o

├── main.cpp

├── main.o

└── target

 

二、 a setup for makefile

objects = main.o demo.o #定义一个变量 target: $(objects) #最终目标文件及其依赖的文件和生成方式	clang++ -std=c++11 $(objects) -g -o target #生成命令 main.o: demo.hpp #中间文件及其依赖文件和生成方式	clang++ -std=c++11 main.cpp -g -c -o main.o #生成命令 demo.o: demo.hpp #中间文件及其依赖文件和生成方式	clang++ -std=c++11 demo.cpp -g -c -o demo.o #生成命令 clean: #伪中间文件,既动作	rm -rf target $(objects) #清楚编译链接所产生的文件

  

  

注:对于中间文件的依赖文件,我们可以利用make的自动推导功能,只制定自定义依赖的头文件即可;对于中间文件的生成方式,由于默认的生成方式存在问题,我们需要制定。

三、more

  1)对于大型的project,我们可以新建一个src目录,将各个模块的源文件放在其下

  2)对于编译产生的中间文件,我们可以新建一个build目录,并将其置于其下

  3)对于产生的最终目标文件,我们可以新建一个bin目录,并将其置于其下

 4)对于编译链接,我们可以采用范性编程的思想,利用find和patsubst等命令来构造sources和objects等变量

如下:

#FoldersSRCDIR := srcBUILDDIR := buildTARGETDIR := bin#targetEXECUTABLE := targetTRAGET = $(TARGETDIR)/$(EXECUTABLE)#code listsSRCEXT := cppSOURCES := $(shell find $(SRCDIR) -type f -name "*.$(SRCEXT)")OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o))$(TRAGET): $(OBJECTS)	@mkdir -p $(TARGETDIR)	@clang++ -std=c++11 $^ -g -o $(TRAGET) $(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT)	@mkdir -p $(BUILDDIR)	@clang++ -std=c++11  -c -o $@ $

demo

├── Makefile

├── bin

│   └── target

├── build

│   ├── demo.o

│   └── main.o

└── src

    ├── demo.cpp

    ├── demo.hpp

    └── main.cpp

转载于:https://www.cnblogs.com/junqingyang/p/11189748.html

你可能感兴趣的文章
关于render函数的总结
查看>>
JavaScript 小刮号
查看>>
BZOJ USACO 银组 水题集锦
查看>>
Android为TV端助力 Linux命令查看包名类名
查看>>
【zabbix】自动注册,实现自动发现agent并添加监控(agent不需要任何配置)
查看>>
[简单到爆]eclipse-jee-neon的下载和安装
查看>>
vector
查看>>
Redis学习之set类型总结
查看>>
栈和队列
查看>>
CSS2-3常见的demo列子总结一
查看>>
XML & JSON---iOS-Apple苹果官方文档翻译
查看>>
数据挖掘之功能
查看>>
2018-07-13E-R图设计数据库+三大范式+修改用户密码+分配用户权限
查看>>
移动广告行业的复苏
查看>>
Cookie机制,session机制
查看>>
nginx配置错误
查看>>
47 【golang】mysql操作
查看>>
Using ARITHABORT with LLBLGen
查看>>
增量模型与快速模型的异同。
查看>>
Hanoi双塔问题(简单的枚举)
查看>>