Linux学习笔记-对Makefile的初步优化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/81952988

原文件如下:

这里的Makefile源码如下:


helloworld: main.o first.o second.o
	g++ main.o first.o second.o -o helloworld
	
main.o: first.h second.h main.cpp
	g++ -c main.cpp -o main.o

first.o: first.h first.cpp
	g++ -c first.cpp -o first.o
	
second.o: second.cpp second.h
	g++ -c second.cpp -o second.o
	
clean:
	rm -rf *.o

用g++去跑下看看!

本博文的任务是对这个Makefile进行简单的优化!

对程序名称进行优化!

Makefile代码如下:

EXE=NiMei

$(EXE): main.o first.o second.o
	g++ main.o first.o second.o -o $(EXE)
	
main.o: first.h second.h main.cpp
	g++ -c main.cpp -o main.o

first.o: first.h first.cpp
	g++ -c first.cpp -o first.o
	
second.o: second.cpp second.h
	g++ -c second.cpp -o second.o
	
clean:
	rm -rf *.o $(EXE)

用g++跑下,程序运行截图如下:

使用下clean这个Makefile命令!

Linux命令与现象都如下图:


 

如果有多个.cpp,要生成.o文件,Makefile也提供了优化,Makefile源码如下:

EXE=NiMei

$(EXE): main.o first.o second.o
	g++ main.o first.o second.o -o $(EXE)
	
main.o: first.h second.h main.cpp
	g++ -c main.cpp -o main.o

%o: %.cpp
	g++ -c $< -o $@
	
clean:
	rm -rf *.o $(EXE)

这里只给出了.cpp的依赖项,并没有给出.h的。(后期博文会给出)

程序运行截图如下:

下面给出两个函数功能:

1.使用通配符找当前文件所有.cpp文件,源码如下:

EXE=NiMei

FIND_CPP=$(wildcard *.cpp)

$(EXE): main.o first.o second.o
	g++ main.o first.o second.o -o $(EXE)
	
main.o: first.h second.h main.cpp
	g++ -c main.cpp -o main.o

%o: %.cpp
	g++ -c $< -o $@
	
clean:
	rm -rf *.o $(EXE)
	
test1:
	@echo $(FIND_CPP)

运行截图如下:

2.把当前文件夹里面的.cpp文件找出来,构造.o文件名(其实就是把xxx.cpp中的xxx提取出来,再后面接一个.o)

Makefile源码如下:

EXE=NiMei

FIND_CPP=$(wildcard *.cpp)
FIND_CPPTOO=$(patsubst %.cpp, %.o, $(FIND_CPP))

$(EXE): main.o first.o second.o
	g++ main.o first.o second.o -o $(EXE)
	
main.o: first.h second.h main.cpp
	g++ -c main.cpp -o main.o

%o: %.cpp
	g++ -c $< -o $@
	
clean:
	rm -rf *.o $(EXE)
	
test1:
	@echo $(FIND_CPP)
	
test2:
	@echo $(FIND_CPPTOO)

程序运行截图如下:

再次把Makefile进行优化,源码如下:

EXE=NiMei

FIND_CPP=$(wildcard *.cpp)
FIND_CPPTOO=$(patsubst %.cpp, %.o, $(FIND_CPP))

$(EXE): $(FIND_CPPTOO)
	g++ $(FIND_CPPTOO) -o $(EXE)
	
main.o: first.h second.h main.cpp
	g++ -c main.cpp -o main.o

%o: %.cpp
	g++ -c $< -o $@
	
clean:
	rm -rf *.o $(EXE)
	
test1:
	@echo $(FIND_CPP)
	
test2:
	@echo $(FIND_CPPTOO)

程序运行截图如下:

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/81952988
今日推荐