Makefile相关知识

来源:互联网 发布:在淘宝某店被限制购买 编辑:程序博客网 时间:2024/06/05 11:09

最简单的示例:

test:test.o listen_sock.o

gcc -o test test.o listen_sock.o

test.o:test.c listen_sock.h

gcc -c test.c

listen_sock.o:listen_sock.c listen_sock.h

gcc -c listen_sock.c

1.每一个 *.c文件都可以对应一个*.o文件

2.test.o:test.c listen_sock.h中test.c可以不写,默认对照test.o文件

3. gcc -c test.c可以不写


补充内容:

gcc -MM test.c 输出  test.o: test.c listen_sock.h


make 的参数有很多, 可以通过 make -h 去查看, 下面只介绍几个我认为比较有用的.

参数

含义

--debug[=<options>]输出make的调试信息, options 可以是 a, b, v-j --jobs同时运行的命令的个数, 也就是多线程执行 Makefile-r --no-builtin-rules禁止使用任何隐含规则-R --no-builtin-variabes禁止使用任何作用于变量上的隐含规则-B --always-make假设所有目标都有更新, 即强制重编译


变量名

含义

ARFLAGSAR命令的参数CFLAGSC语言编译器的参数CXXFLAGSC++语言编译器的参数

自动变量

含义

$@目标集合$%当目标是函数库文件时, 表示其中的目标文件名$<第一个依赖目标. 如果依赖目标是多个, 逐个表示依赖目标$?比目标新的依赖目标的集合$^所有依赖目标的集合, 会去除重复的依赖目标$+所有依赖目标的集合, 不会去除重复的依赖目标$*这个是GNU make特有的, 其它的make不一定支持

$(patsubst  %.cpp,%.o ,$(src_files))将src_file中的.cpp文件替换为.o文件 


0 0