Linux学习笔记-对Makefile的初步优化
原文件如下: 这里的Makefile源码如下:helloworld: main.o first.o second.og++ main.o first.o second.o -o helloworldmain.o: first.h second.h main.cppg++ -c main.cpp -o main.ofirst.o: first.h first.c...
·
原文件如下:
这里的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)
程序运行截图如下:
更多推荐
已为社区贡献22条内容
所有评论(0)