对 linux C 编程 makefile书写的疑问

CC=gcc
CFLAGS=-Wall -g -DDEBUG
LDFLAGS=
LIBS=

all: 1-1

1-1: 1-1.c
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)

clean:
rm -rf *.o
初学linux

对CFLAGS,LDFLAGS,LIBS的疑问,不知具体都什么作用
CFLAGS还行,赋了值,而LDFLAGS,LIBS = 空,为什么还要写,难道是为了书写标准makefile,求高手帮解答一下。

作者: feilongzafei   发布时间: 2011-02-12

CC,CFLAGS,LDFLAGS,LIBS一坨驮的都是变量的定义
make程序在解析makefile的时侯会把变量引用$(VAR)都替换成相应的定义,当然变量不赋值也是可以的,替换出来就是空
楼主这个应该是个模板文件,把gcc的参数按作用分类放到了几个变量里,这样要改gcc的参数,只要修改几个变量就行了,比较方便。这个并不是makefile要求要这么写。

作者: imhotep1983   发布时间: 2011-02-12

1楼都说了。
如果是自己这个程序使用的Makefile,可以十分简单,不过,一般地,每个人都会有自己的模板,这样,只修改几个地方就可以适合不同的程序了。
所有的变量都在这句体现了:
$(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
——当然,还有其它地方。

作者: subfate   发布时间: 2011-02-12