Makefile简单的配置

一、文件配置目录

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等变量

如下:

#Folders
SRCDIR := src
BUILDDIR := build
TARGETDIR := bin
#target
EXECUTABLE := target
TRAGET = $(TARGETDIR)/$(EXECUTABLE)
#code lists
SRCEXT := cpp
SOURCES := $(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 $@ $<

clean:
	@rm -rf target $(TARGETDIR) $(BUILDDIR)

demo

├── Makefile

├── bin

│   └── target

├── build

│   ├── demo.o

│   └── main.o

└── src

    ├── demo.cpp

    ├── demo.hpp

    └── main.cpp

原文链接: https://www.cnblogs.com/junqingyang/p/11189748.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Makefile简单的配置

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/299041

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 下午8:16
下一篇 2023年2月15日 下午8:17

相关推荐