帮忙看看makefile 中关于变量的条件赋值 的问题吧?不搞定我下周就死了
来源: 互联网 发布时间:2015-02-24
本文导语: debug release :myprog debug :=CFLAGS=-g release :=CFLAGS=-O OBJECTS=myprog.o myfunc.o myprog:$(OBJECTS) $(LINK.c) -o $@ @(OBJECTS) myprog.o:myprog.c myprog.h $(COMPILE.c) myprog.c myfunc.o:myfunc.c myprog.h $(COMPILE.c) myfunc.c 我想达到的目的是 运行make d...
debug release :myprog
debug :=CFLAGS=-g
release :=CFLAGS=-O
OBJECTS=myprog.o myfunc.o
myprog:$(OBJECTS)
$(LINK.c) -o $@ @(OBJECTS)
myprog.o:myprog.c myprog.h
$(COMPILE.c) myprog.c
myfunc.o:myfunc.c myprog.h
$(COMPILE.c) myfunc.c
我想达到的目的是 运行make debug 则得到的目标文件有调试信息而不优化,而 运行 make release 则优化而不产生调试信息。可是我的SCO UNIX 5.05总提示我出错。唉,郁闷啊!
另外 在SCO UNIX 的make 中是不是没有缺省变量LINK.c 和COMPILE.c?我想知道我的make 有哪些缺省变量(即宏),通过什么命令查呢?make -p 显示的那些变量是不是所有的?
debug :=CFLAGS=-g
release :=CFLAGS=-O
OBJECTS=myprog.o myfunc.o
myprog:$(OBJECTS)
$(LINK.c) -o $@ @(OBJECTS)
myprog.o:myprog.c myprog.h
$(COMPILE.c) myprog.c
myfunc.o:myfunc.c myprog.h
$(COMPILE.c) myfunc.c
我想达到的目的是 运行make debug 则得到的目标文件有调试信息而不优化,而 运行 make release 则优化而不产生调试信息。可是我的SCO UNIX 5.05总提示我出错。唉,郁闷啊!
另外 在SCO UNIX 的make 中是不是没有缺省变量LINK.c 和COMPILE.c?我想知道我的make 有哪些缺省变量(即宏),通过什么命令查呢?make -p 显示的那些变量是不是所有的?
|
采用这样的方式,使用3个文件
makefile debug.mk release.mk
你执行
make debug
make release
进行调试和发行版编译
#makefile
debug :
$(MAKE) -f ./debug.mk
release:
$(MAKE) -f ./release.mk
#debug.mk
CFLAGS := -g
main: main.o test.o
gcc $(CFLAGS) -o main main.o test.o
main.o: main.c test.h
gcc $(CFLAGS) -c main.c
test.o: test.c test.h
gcc $(CFLAGS) -c test.c
#release.mk
CFLAGS := -O
main: main.o test.o
gcc $(CFLAGS) -o main main.o test.o
main.o: main.c test.h
gcc $(CFLAGS) -c main.c
test.o: test.c test.h
gcc $(CFLAGS) -c test.c
makefile debug.mk release.mk
你执行
make debug
make release
进行调试和发行版编译
#makefile
debug :
$(MAKE) -f ./debug.mk
release:
$(MAKE) -f ./release.mk
#debug.mk
CFLAGS := -g
main: main.o test.o
gcc $(CFLAGS) -o main main.o test.o
main.o: main.c test.h
gcc $(CFLAGS) -c main.c
test.o: test.c test.h
gcc $(CFLAGS) -c test.c
#release.mk
CFLAGS := -O
main: main.o test.o
gcc $(CFLAGS) -o main main.o test.o
main.o: main.c test.h
gcc $(CFLAGS) -c main.c
test.o: test.c test.h
gcc $(CFLAGS) -c test.c
|
我以前在Solaris下的程序的makefile就想你写的一样,
可以make release或make debug。但好象有些系统的
make不支持target := variable =value这样的语句。
gmake好象都不支持。至少我在Windows下用gmake 3.79.1
不支持。
可以make release或make debug。但好象有些系统的
make不支持target := variable =value这样的语句。
gmake好象都不支持。至少我在Windows下用gmake 3.79.1
不支持。
|
cc -D DEBUG ...
在程序中可以这样定义
#if DEBUG
...
#endif
在程序中可以这样定义
#if DEBUG
...
#endif