在Linux下编写Makefile是为了简化编译过程,使得编译多个源文件和库变得更加容易。以下是一个简单的Makefile示例,以及如何使用它的说明。
首先,创建一个名为Makefile
的文件(没有文件扩展名),然后在其中输入以下内容:
# 编译器设置
CXX = g++
# 编译选项
CXXFLAGS = -Wall -std=c++11
# 目标可执行文件名
TARGET = my_program
# 源文件列表
SOURCES = main.cpp file1.cpp file2.cpp
# 对象文件列表
OBJECTS = $(SOURCES:.cpp=.o)
# 默认目标规则
all: $(TARGET)
# 链接目标可执行文件
$(TARGET): $(OBJECTS)
$(CXX) $(CXXFLAGS) -o $@ $^
# 编译源文件为对象文件
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $< -o $@
# 清理生成的文件
clean:
rm -f $(OBJECTS) $(TARGET)
这个Makefile定义了一个简单的C++项目,其中包含一个可执行文件my_program
,它依赖于三个源文件:main.cpp
、file1.cpp
和file2.cpp
。编译器设置为g++
,编译选项包括-Wall
(显示所有警告)和-std=c++11
(使用C++11标准)。
在这个Makefile中,我们定义了几个规则:
all
:默认目标规则,用于构建整个项目。$(TARGET)
:链接目标可执行文件的规则。%.o: %.cpp
:编译源文件为对象文件的通用规则。clean
:清理生成的文件(对象文件和可执行文件)。要使用这个Makefile,只需在终端中导航到包含Makefile的目录,然后运行make
命令。这将根据Makefile中的规则编译项目并生成可执行文件。
如果需要清理生成的文件,可以运行make clean
命令。