makefile | 使用方法 |不好记,当多练

废话不多说,makefile就是一个脚本,实现c/c++编译,生成可执行文件

它的语法,刚上手会眼花缭乱,所以循序渐进会比较好
视频讲解: 于仕琪
参考资料: 笔记
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


`

以下是简单的介绍,吃透还得多用,这东西,不练忘的特别快

#版本一:			注意table键在不同的环境缩进的空格数不同
Hello:main.cpp printthehello.cpp factorial.cpp

​	g++ -o hello main.cpp printthehello.cpp factorial.cpp


#版本二:
CXX = g++			#采用g++编译器

TARGET=hello	#生成的目标位hello 可执行文件

OBJ=mai n.o printthehello.o factorial.o	#依赖这些编译文件

#执行

$(TARGET):$(OBJ)

​	$(CXX) -o $(TARGET) $(OBJ)

Main.o:main.cpp

​	$(CXX) -c main.cpp

printthehello.o:printthehello.cpp

​	$(CXX) -c printthehello.cpp

factorial.o:factorial.cpp

​	$(CXX) -c factorial.cpp 

#改进点:只编译修改的文件,而不必全部编译

#版本三:
CXX = g++			#采用g++编译器

TARGET=hello	#生成的目标位hello 可执行文件

OBJ=mai n.o printthehello.o factorial.o	#依赖这些编译文件

CXXFLAGS =  -c - wall			#编译选项		所有的wraing都显示出来

$(TARGET):$(OBJ)

​	$(CXX)   -o $@  $^				# $@等价于$(TARGET)    $^ 等价于$(OBJ)

%.o:%.cpp								#不用再写三条	例如 g++ -E main.cpp main.o

​	$(CXX) $(CXXFLAGS) $<  -o $@					# $<	表示指定依赖中的第一个依赖

.PHONY:clean       		#添加这个行代码简单理解就是为了避免与当前文件夹出现同名clean的冲突,导致无法执行删除

clean:

​	rm -f *.o $(TARGET)	#强制删除所有的 .o和目标文件#命令行行为:make clean

#版本四:
CXX = g++			#采用g++编译器

TARGET=hello	#生成的目标位hello 可执行文件

SRC = $(wildcard *.cpp)

OBJ = $(patsubst %.cpp, %.o, $(SRC))

CXXFLAGS =  -c - wall			#编译选项		所有的wraing都显示出来

$(TARGET):$(OBJ)

​	$(CXX) -o $@ $^
%.o: %.cpp
	$(CXX) $(CXXFLAGS) $< -o $@

.PHONY:clean 

clean:

​	rm    -f      *.o      $(TARGET)

总结

对版本四的详细介绍:

CXX = g++			#采用g++编译器
变量CXX就代表着g++  也就是c++编译器

TARGET=hello	#生成的目标位hello 可执行文件
变量TARGET 表示生成的可执行文件为hello

SRC = $(wildcard *.cpp)
变量SRC表示着 “收集”列表中的所有cpp文件
$(wildcard pattern)	返回所有.cpp文件

OBJ = $(patsubst %.cpp, %.o, $(SRC))
$(patsubst pattern, replacement, text)
表示把所有的.cpp文件替换成相应的.o文件
变量OBJ 表示着所有的所有的.o文件
CXXFLAGS =  -c - wall	#编译选项  所有的wraing都显示出来

$(TARGET):$(OBJ)

​	$(CXX)    -o   $@   $^
编译编译生成hello可执行文件
$@ 表示目标文件(指的是hello可执行文件)
$^	表示所有依赖的文件(指的是所有的.o文件)
%.o : %.cpp
	$(CXX). $(CXXFLAGS)  $< -o $@
把所有的.cpp一一对应编译成相应的.o文件	

.PHONY:clean 
避免发生文件名冲突,我就是要删除我编译的clean文件,而不是其他的同名文件
clean:

​	rm    -f      *.o      $(TARGET)
删除所有的.o 文件和hello可执行文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值