Linux下makefile的写法
Linux下的GTK+2.0编程:
有文件关系:
bankmsys.c中包含的头文件:bankmsys.h atm.h regist.h
atm.c中包含的头文件:atm.h
regist.c中包含的头文件:regist.h fileop.h
fileop.c中包含的头文件:fileop.h
---------------------------------------------
我的写法如下:
CC =gcc
pbankmsys =bankmsys
patm =atm
pregist =regist
pfileop =fileop
$(pbankmsys): $(pbankmsys).o $(patm).o $(pregist).o
$(CC) -o $(pbankmsys) $(pbankmsys).o $(patm).o $(pregist).o `pkg-config --libs gtk+-2.0`
$(pbankmsys).o : $(pbankmsys).c $(pbankmsys).h $(patm).h $(pregist).h
$(CC) -c $(pbankmsys).c `pkg-config --cflags gtk+-2.0`
$(patm).o : $(patm).c $(patm).h
$(CC) -c $(patm).c `pkg-config --cflags gtk+-2.0`
$(pregist).o : $(pregist).c $(pregist).h $(pfileop).h
$(CC) -c $(pregist).c `pkg-config --cflags gtk+-2.0`
$(pfileop).o : $(pfileop).c $(pfileop).h
$(CC) -c $(pfileop).c
clean:
-rm -f *.o
-----------------------------------------------------
运行结果如下:
$ make -f makefile.am
gcc -o bankmsys bankmsys.o atm.o regist.o `pkg-config --libs gtk+-2.0`
regist.o: In function `set_user_info':
regist.c:(.text+0x14fc): undefined reference to `generate_card_id'
collect2: ld 返回 1
make: *** [bankmsys] 错误 1
解析:
函数:set_user_info位于regist.c中。
函数:generate_card_id位于fileop.h中(不包含头文件<gtk/gtk.h>)。
---------------------------------------------------------
请问:makefile.am怎么写?