Makefile是一种用于编译和链接C++程序的文本文件,它是一种简单的脚本语言,用于指定编译和链接的步骤。编译过程是将源代码文件编译成可执行文件的过程。
Makefile文件的编写包括三个步骤:编写Makefile文件、编译程序和链接程序。
编写Makefile文件
Makefile文件是一个文本文件,其中包含了编译和链接的指令,以及源文件的位置。要编写Makefile文件,需要知道源文件的位置,以及编译和链接的步骤。
# Makefile #指定源文件 SRCS = main.cpp foo.cpp bar.cpp #指定目标文件 TARGET = myprog #指定编译器 CC = g++ #指定编译器选项 CFLAGS = -Wall -g #指定链接器 LD = g++ #指定链接器选项 LDFLAGS = #指定目标文件 OBJS = $(SRCS:.cpp=.o) #生成目标文件 $(TARGET): $(OBJS) $(LD) $(LDFLAGS) -o $(TARGET) $(OBJS) #编译源文件 .cpp.o: $(CC) $(CFLAGS) -c $< #清除中间文件 clean: rm -f $(OBJS) $(TARGET)
上面的Makefile文件中,定义了源文件的位置,定义了编译器和链接器的选项,定义了目标文件的生成和清除中间文件的步骤。
编译程序
编译程序是将源代码文件编译成可执行文件的过程。Makefile文件中定义了编译器的选项,执行编译步骤需要使用编译器,例如g++。
#使用g++编译源文件 g++ -Wall -g main.cpp foo.cpp bar.cpp -o myprog
上面的命令行中,-Wall表示输出所有警告信息,-g表示输出调试信息,-o表示输出可执行文件到myprog。
链接程序
链接程序是将编译后的目标文件链接成可执行文件的过程。Makefile文件中定义了链接器的选项,执行链接步骤需要使用链接器,例如g++。
#使用g++链接编译后的目标文件 g++ -o myprog main.o foo.o bar.o
上面的命令行中,-o表示将目标文件链接成可执行文件myprog。
使用方法
使用make命令可以自动执行Makefile文件中定义的编译和链接步骤。
- 进入包含Makefile文件的目录,执行make命令:
cd myprog make
- make命令会自动执行Makefile文件中定义的编译和链接步骤:
g++ -Wall -g main.cpp foo.cpp bar.cpp -o myprog g++ -o myprog main.o foo.o bar.o
- make命令会生成可执行文件myprog:
myprog