Makefile详解 讲清楚makefile用法和几种使用方法

Makefile 是批量处理编译文件的工具,主要应用在编译大型项目时,需要同时调用多个文件时的操作。

具体用法有以下几种

##Version 1 
hello: main.cpp printhello.cpp factorial.cpp  // hello 指要输出的文件, main.cpp 需要用的文件函数名
	g++ -o hello main.cpp printhello.cpp factorial.cpp 

##Version 2
CXX = g++
TARGET = hello
OBJ = main.o printhello.o factorial.o

$(TARGET): $(OBJ) // target 依赖于 OBJ生成的
	$(CXX) -o $(TARGET) $(OBJ) // 采用 CXX -o 方法 target 依赖于 OBJ生成的

main.o: main.cpp  // main.o 怎么来的 下面同理
	$(CXX) -c main.cpp

printhello.o: printhello.cpp
	$(CXX) -c printhello.cpp

factorial.o: factorial.cpp
	$(CXX) -c factorial.cpp

##Version 3 
CXX = g++
TARGET = hello
OBJ = main.o printhello.o factorial.o

CXXFLAGS = -c -Wall 

$(TARGET): $(OBJ)
	$(CXX) -o $@ %^ // $@ = TARGET  %^ = 依赖OBJ 

%.o:%.cpp: //cpp文件生成.o 文件如下操作
	$(CXX) $(CXXFLAGS) $< -o $@
.PHONY:clearn //防止文件中有clean 文件 无法执行下面的程序,因此加上此代码出现奇异
clean:
	rm -f *.o $(TARGET) 删除所有的.o文件 和 TARGET 文件

#Version 4
CXX = g++
TARGET = hello
SRC = $(wildcard *.cpp) //当前目录下的cpp 都放在SRC这个变量里
OBJ = $(patsubst %.cpp, %.o, $(SRC)) // 将SRC中的变量都替换成.o文件
CXXFLAGS = -c -Wall 
$(TARGET): $(OBJ)
	$(CXX) -o $@ %^ // $@ = TARGET  %^ = 依赖OBJ 

%.o:%.cpp: //cpp文件生成.o 文件如下操作
	$(CXX) $(CXXFLAGS) $< -o $@
.PHONY:clearn //防止文件中有clean 文件 无法执行下面的程序,因此加上此代码出现奇异
clean:
	rm -f *.o $(TARGET) 删除所有的.o文件 和 TARGET 文件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值