Makefile编译,gdb调试(用文本打开,用vim打开会出现tab变空格的现象)
Make clean :清除以前的文件
使用技巧
先输入"make"进行编译
再输入"./文件名+命令行指令"
eg: ./runsort 100000
书写要点
test (目标生成文件): test.cpp(依赖生成文件)
(Tab)g++ test.cpp -o test(命令)
-
基础操作
main : main.c tool.o
gcc main.c tool.o -o main(将tool.o和main.c文件合并出来)
tool.o:tool.c
gcc -c tool.c
clean:(需要自己在终端写make clean 进行删除)
rm *.o main(删除所有的.o文件与生成的可执行文件main) -
foo.c使用foo.h头文件
main:main.c foo.o bar.o
gcc main.c foo.o bar.o -o main
foo.o:foo.c
gcc -c foo.c
bar.o:bar.c
gcc -c bar.c
clean:
rm *.o main -
定义变量代替编译器
CC=gcc
main:main.c foo.o bar.o
$(CC) main.c foo.o bar.o -o main
foo.o:foo.c
$(CC) -c foo.c
bar.o:bar.c
$(CC) -c bar.c
clean:
rm *.o main -
加入其他指令
CC=gcc
CFLAS= -lm -Wall -g
main:main.c foo.o bar.o
$(CC) $(CFLAS) main.c foo.o bar.o -o main
foo.o:foo.c
$(CC) $(CFLAS) -c foo.c
bar.o:bar.c
$(CC) $(CFLAS) -c bar.c
clean:
rm *.o main -
编译多个可执行文件
CC=gcc
CFLAS= -lm -Wall -g
all:main_i main_a
main_i:main_i.c foo.o bar.o
$(CC) $(CFLAS) main_i.c foo.o bar.o -o main_i
main_a:main_a.c foo.o bar.o
$(CC) $(CFLAS) main_a.c foo.o bar.o -o main_a
foo.o:foo.c foo.h
$(CC) $(CFLAS) -c foo.c
bar.o:bar.c bar.h
$(CC) $(CFLAS) -c bar.c
clean:
rm *.o main_i main_a
要生成rs可执行文件的最终代码
CFO=main.o append.o cacute.o classfy.o d_id.o fileop.o m_id.o print.o search.o sort.o
CFG=cici.h zizi.h
rs: cici.h $(CFO)
g++ $(CFO) -o rs
main.o:main.cpp $(CFG)
g++ -c main.cpp -o main.o
append.o:append.cpp $(CFG)
g++ -c append.cpp -o append.o
cacute.o:cacute.cpp $(CFG)
g++ -c cacute.cpp -o cacute.o
classfy.o:classfy.cpp $(CFG)
g++ -c classfy.cpp -o classfy.o
d_id.o:d_id.cpp $(CFG)
g++ -c d_id.cpp -o d_id.o
fileop.o:fileop.cpp $(CFG)
g++ -c fileop.cpp -o fileop.o
m_id.o:m_id.cpp $(CFG)
g++ -c m_id.cpp -o m_id.o
print.o:print.cpp $(CFG)
g++ -c print.cpp -o print.o
search.o:search.cpp $(CFG)
g++ -c search.cpp -o search.o
sort.o:sort.cpp $(CFG)
g++ -c sort.cpp -o sort.o
clean:
rm *.o rs