链接自:make与cmake入门_make cmake-CSDN博客
-
makefile三要素
-
make工作原理
- 案例
CXX = g++ TARGET = hello OBJ = main.o printhello.o factorial.o CXXFLAGS = -c -Wall #解除所有警告 $(TARGET): $(OBJ) $(CXX) -o $@ $^ #$@表示目标,$^表示依赖(所有) %.o: %.cpp $(CXX) $(CXXFLAGS) $< -o $@ #$<表示依赖的第一个 .PHONY: clean clean: rm -f *.o $(TARGET) # -f表示强制删除
CXX = g++ TARGET = hello SRC = $(wildcard *.cpp) #源文件为所有的cpp文件 OBJ = $(patsubst %.cpp, %.o, $(SRC)) CXXFLAGS = -c -Wall $(TARGET): $(OBJ) $(CXX) -o $@ $^ %.o: %.cpp $(CXX) $(CXXFLAGS) $< -o $@ .PHONY: clean clean: rm -f *.o $(TARGET)
-
常见的自动化变量解析
变量 | 解析 |
$0 | 当前脚本的文件名。 |
$n(n≥1) | 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是 $1,第二个参数是 $2>。 |
$# | 传递给脚本或函数的参数个数。 |
$* | 传递给脚本或函数的所有参数。 |
$@ | 表示目标文件。 |
$? | 上个命令的退出状态,或函数的返回值。 |
$$ | 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。 |
$^ | 表示所有的依赖文件 |
$< | 表示第一个依赖文件 |