Eastsheng's Wiki

编译C++程序:Makefile文件

2023-01-04 18:11:28

[toc]

Makefile文件写法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CXX = g++
CXXFLAGS = -Wall -Wextra -std=c++11
SRCS = LidDrivenFlow.cpp
OBJS = $(SRCS:.cpp=.o)
TARGET = LidDrivenFlow

.PHONY: all clean

all: $(TARGET)

$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) -o $@ $^

%.o: %.cpp
$(CXX) $(CXXFLAGS) -c -o $@ $<

clean:
rm -f $(OBJS) $(TARGET)

解释

在这个Makefile中:

  • CXX 定义了 C++ 编译器,这里是 g++
  • CXXFLAGS 包含编译选项,比如 -Wall-Wextra 用于启用警告,-std=c++11 用于指定 C++11 标准。
  • SRCS 定义了源代码文件名。
  • OBJS 定义了目标文件名,通过把 .cpp 后缀改为 .o 来得到。
  • TARGET 定义了生成的可执行文件名。
  • all 是默认目标,会生成 $(TARGET)
  • $(TARGET) 的规则定义了如何将目标文件链接为可执行文件。
  • %.o: %.cpp 是一个模式规则,定义了如何编译每个源文件为目标文件。
  • clean 是一个伪目标,用于清除生成的目标文件和可执行文件。

你可以将这个Makefile文件保存为名为 Makefile 的文件,然后在终端中执行 make 命令来编译你的C++程序。