下面从最基础到稍规范一点给你讲 Linux 下 C++ 的 Makefile 写法,适合新手。
假设有:
main.cpp
main: main.cpp
g++ -o main main.cpp
clean:
rm -f main
make # 编译
./main # 运行
make clean # 清理
⚠️ 注意:命令行前必须是 Tab,不是空格
目录结构:
main.cpp
foo.cpp
foo.h
CXX = g++
CXXFLAGS = -Wall -std=c++11
target = app
$(target): main.o foo.o
$(CXX) -o $(target) main.o foo.o
main.o: main.cpp foo.h
$(CXX) $(CXXFLAGS) -c main.cpp
foo.o: foo.cpp foo.h
$(CXX) $(CXXFLAGS) -c foo.cpp
clean:
rm -f *.o $(target)
make
./app
make clean
CXX = g++
CXXFLAGS = -Wall -std=c++11
app: main.o foo.o
$(CXX) -o app main.o foo.o
clean:
rm -f app *.o
Make 会自动把 .cpp 编译成 .o
CXX = g++
CXXFLAGS = -Wall -std=c++17 -O2
SRC = main.cpp foo.cpp
OBJ = $(SRC:.cpp=.o)
TARGET = app
$(TARGET): $(OBJ)
$(CXX) -o $(TARGET) $(OBJ)
%.o: %.cpp
$(CXX) $(CXXFLAGS) -c $<
clean:
rm -f $(OBJ) $(TARGET)
❌ 用空格代替 Tab
✅ 命令行必须用 Tab
❌ 忘了写头文件依赖
✅ 改了 .h,重新 make
pkg-config(如 OpenCV、GTK)CMake(比 Makefile 更现代)如果你愿意,可以告诉我:
我可以直接帮你写一个能用的 Makefile。