写法1
debug:main
./main
main:add.o sub.o main.o
g++ main.o add.o sub.o -o main
add.o:add.cpp
g++ -c add.cpp -o add.o
sub.o:sub.cpp
g++ -c sub.cpp -o sub.o
main.o:main.cpp
g++ -c main.cpp -o main.o
clean:
rm *.o main
执行结果
@ubuntu:~/share/01code/myMakefile$ make clean
rm *.o main
sxt@ubuntu:~/share/01code/myMakefile$ make debug
g++ -c add.cpp -o add.o
g++ -c sub.cpp -o sub.o
g++ -c main.cpp -o main.o
g++ main.o add.o sub.o -o main
./main
[Jan 10 2022 09:07:27 main:9] hello Makefile
[Jan 10 2022 09:07:27 main:14] 10 + 5 = 15
[Jan 10 2022 09:07:27 main:15] 10 - 5 = 5
写法2
OBJ = main.o sub.o add.o
xx = g++
CFLAGS = -Wall -O -g #-Wall输出所有警告信息 -O编译优化 -g 编译debug版本
TARGER_APP = main
debug:$(TARGER_APP)
./$(TARGER_APP)
$(TARGER_APP):$(OBJ)
$(xx) $(OBJ) -o $(TARGER_APP)
add.o:add.cpp
$(xx) $(CFLAGS) -c add.cpp -o add.o
sub.o:sub.cpp
$(xx) $(CFLAGS) -c sub.cpp -o sub.o
main.o:main.cpp
$(xx) $(CFLAGS) -c main.cpp -o main.o
clean:
rm $(OBJ) $(TARGER_APP)
@ubuntu:~/share/01code/myMakefile$ make clean
rm main.o sub.o add.o main
@ubuntu:~/share/01code/myMakefile$ make debug
g++ -Wall -O -g -c main.cpp -o main.o
g++ -Wall -O -g -c sub.cpp -o sub.o
g++ -Wall -O -g -c add.cpp -o add.o
g++ main.o sub.o add.o -o main
./main
[Jan 10 2022 09:17:58 main:9] hello Makefile
[Jan 10 2022 09:17:58 main:14] 10 + 5 = 15
[Jan 10 2022 09:17:58 main:15] 10 - 5 = 5
写法3
SOURCE = $(wildcard *.c *.cpp)
OBJ = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
xx = g++
CFLAGS = -Wall -O -g #-Wall输出所有警告信息 -O编译优化 -g 编译debug版本
TARGER_APP = main
debug:$(TARGER_APP)
./$(TARGER_APP)
$(TARGER_APP):$(OBJ)
$(xx) $(OBJ) -o $(TARGER_APP)
%.o:%.cpp
$(xx) $(CFLAGS) -c $< -o $@
%.o:%.c
$(xx) $(CFLAGS) -c $< -o $@
test:
echo $(SOURCE)
echo $(OBJ)
clean:
rm $(OBJ) $(TARGER_APP)