C ++ Primer: Source in the makefile simple summary


1. Background

  C ++ Primer mainfile source are basically three kinds, and are mainfile MS_makefile_template, mainfile of chapters in the main directory, meaning mainfile now summarize each instruction.

Main directory

List of chapters

2. Description

2.1 home directory mainfile

  Home Directory mainfile follows, which is used to jump to each chapter subdirectories, and by nmake nmake clean nmake clobber three commands are implemented compile source code, delete .obj, deletion of the .obj and .exe . The specific implementation of each command implemented by mainfile subdirectories.

DIRS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

all:  
	cd 1 && nmake -nologo 
	cd 2 && nmake -nologo 
	cd 3 && nmake -nologo 
	cd 4 && nmake -nologo 
	cd 5 && nmake -nologo 
	cd 6 && nmake -nologo 
	cd 7 && nmake -nologo 
	cd 8 && nmake -nologo 
	cd 9 && nmake -nologo
	cd 10 && nmake -nologo
	cd 11 && nmake -nologo
	cd 12 && nmake -nologo
	cd 13 && nmake -nologo 
	cd 14 && nmake -nologo 
	cd 15 && nmake -nologo 
	cd 16 && nmake -nologo 
	cd 17 && nmake -nologo 
	cd 18 && nmake -nologo 
	cd 19 && nmake -nologo 

clean: 
	cd 1 && nmake -nologo clean 
	cd 2 && nmake -nologo clean 
	cd 3 && nmake -nologo clean 
	cd 4 && nmake -nologo clean 
	cd 5 && nmake -nologo clean 
	cd 6 && nmake -nologo clean 
	cd 7 && nmake -nologo clean 
	cd 8 && nmake -nologo clean 
	cd 9 && nmake -nologo clean
	cd 10 && nmake -nologo clean
	cd 11 && nmake -nologo clean
	cd 12 && nmake -nologo clean
	cd 13 && nmake -nologo clean 
	cd 14 && nmake -nologo clean 
	cd 15 && nmake -nologo clean 
	cd 16 && nmake -nologo clean 
	cd 17 && nmake -nologo clean 
	cd 18 && nmake -nologo clean 
	cd 19 && nmake -nologo clean 

clobber: 
	cd 1 && nmake -nologo clobber 
	cd 2 && nmake -nologo clobber 
	cd 3 && nmake -nologo clobber 
	cd 4 && nmake -nologo clobber 
	cd 5 && nmake -nologo clobber 
	cd 6 && nmake -nologo clobber 
	cd 7 && nmake -nologo clobber 
	cd 8 && nmake -nologo clobber 
	cd 9 && nmake -nologo clobber
	cd 10 && nmake -nologo clobber
	cd 11 && nmake -nologo clobber
	cd 12 && nmake -nologo clobber
	cd 13 && nmake -nologo clobber 
	cd 14 && nmake -nologo clobber 
	cd 15 && nmake -nologo clobber 
	cd 16 && nmake -nologo clobber 
	cd 17 && nmake -nologo clobber 
	cd 18 && nmake -nologo clobber 
	cd 19 && nmake -nologo clobber 

Tip: / nologo used to disable copyright notice.

2.2 subdirectory makefile

  Subdirectory makefile actually cited MS_makefile_template home directory. It provides a subdirectory makefile nmake, and specific method nmake clean nmake clobber three kinds of commands.
Subdirectory mainfile content:

# executable files for this directory
OBJECTS = add.exe add_item.exe add_item2.exe avg_price.exe \
		  for_ex.exe forcount.exe item_io.exe main_only.exe \
		  mysum.exe occurs.exe whilecount.exe \

# tells make to use the file "..\MS_makefile_template", which
# defines general rules for making .obj and .exe files
include ..\MS_makefile_template

add_item.obj add_item2.obj avg_price.obj item_io.obj: Sales_item.h

Tip: "include ... \ MS_makefile_template" redistributes MS_makefile_template file on a directory.

Subdirectory contents of mainfile and MS_makefile_template integration (Notes has been removed):

// OBJECTS代表子目录需要生成的文件,其中"\"代表换行
OBJECTS = add.exe add_item.exe add_item2.exe avg_price.exe \
		  for_ex.exe forcount.exe item_io.exe main_only.exe \
		  mysum.exe occurs.exe whilecount.exe \

// CPP指定编译器,这里使用cl.exe
CPP = cl
// CPPFLAGS代表编译时所带的参数,"/EHsc"用于指定异常处理,"/nologo"用于禁止版权声明,"/I.."用于引用上级目录,即主目录。
CPPFLAGS = /EHsc /nologo /I.. $(LOCFLAGS)
// LOCFLAGS代表编译时额外需要添加的章节目录,方便引用文件夹中相关头文件。
LOCFLAGS =

// 默认生成OBJECTS所包含的.exe
all: $(OBJECTS) 

// 第一行表示将源文件编译成目标文件,即.cpp编译.obj,
// 第二行代表编译命令,"CPP"代表编译器, "CPPFLAGS"代表编译参数,
// "/c"表示生成.obj,"$< "代表源文件,即.cpp。
.cpp.obj: 
	$(CPP) $(CPPFLAGS) /c $< 

// 第一行表示将源文件编译成目标文件,即.obj编译成.exe
// 第二行代表代表编译命令,"CPP"代表编译器, "CPPFLAGS"代表编译参数,"$< "代表源文件,即.obj。
.obj.exe:
	$(CPP) $(CPPFLAGS) $<

// 清除命令,主要删除*.obj
clean:
	del *.obj core *.stackdump

// 清除所有命令,clobber依赖于clean,除了删除*.exe ,还需执行clean命令
clobber: clean
	del *.exe 

// 以":"分隔,表示前面文件的编译需要引用后面文件。
add_item.obj add_item2.obj avg_price.obj item_io.obj: Sales_item.h

makefile execution results

3. Summary

  1. For multi-file compilation run, more efficient use makefile.
Published 77 original articles · won praise 25 · views 10000 +

Guess you like

Origin blog.csdn.net/qq_34801642/article/details/103831395