Makefile简介
Makefile是一种用于构建C/C++程序的文件,其中包含了项目中所有源文件、头文件以及编译器和链接器指令。使用Makefile可以使编译和链接成为一个自动化的过程,这样就可以方便地管理复杂的项目。
以下是一个简单的Makefile示例:
CC=g++
CFLAGS=-Wall -O2
LDFLAGS=
SOURCES=main.cpp file1.cpp file2.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=programall: $(SOURCES) $(EXECUTABLE)$(EXECUTABLE): $(OBJECTS)$(CC) $(LDFLAGS) $(OBJECTS) -o $@.cpp.o:$(CC) $(CFLAGS) -c $< -o $@clean:rm -f $(OBJECTS) $(EXECUTABLE)
在这个示例中,CC
变量指定了编译器,CFLAGS
变量指定了编译选项,LDFLAGS
变量指定了链接选项,SOURCES
变量指定了所有源文件,OBJECTS
变量则表示所有目标文件,EXECUTABLE
变量则表示最终生成的可执行文件。
在Makefile中,有几个重要的关键字:
all
:默认目标,通常用于生成整个项目。$(SOURCES)
:依赖项,表示目标需要哪些文件或者其他目标才能被生成。$(EXECUTABLE)
:目标,表示需要生成的文件或者其他目标。$(OBJECTS)
:中间目标,表示需要生成的中间文件或者目标。$(CC)
:变量,表示使用的编译器。$(CFLAGS)
:变量,表示编译选项。$(LDFLAGS)
:变量,表示链接选项。.cpp.o
:规则,指定如何生成中间文件或者目标。
在使用Makefile时,首先需要确保已经安装了GNU Make程序。然后,在项目根目录下创建一个名为Makefile的文件,并将上述示例代码复制到其中。接下来,可以在终端中进入项目根目录,并输入以下命令:
make
这将会自动编译和链接所有源文件,生成可执行文件。如果需要重新编译项目,只需要输入以下命令即可:
make clean
make
这将会清除所有中间文件和可执行文件,然后重新编译和链接项目。
总体来说,使用Makefile可以使项目的管理和构建变得更加方便和高效。
CFLAGS=-Wall -O2
CFLAGS
变量设置了编译选项-Wall
和-O2
。这些选项用于开启警告信息和进行优化。