OracleのPro*Cを使ったときのMakefileです。
"sample.pc"から"sample.o"をmakeする推論規則が分からなくって、結構なやみました。
でも、単に"*.pc"から"*.o"をつくる規則をかけばいいだけでした。(^^;)
"*.pc"→"*.c"と"*.c"→"*.o"の規則があれば"*.pc"→"*.o"は、できるのかと思ってました。
結論が分かると、なやんでたのがばかみたいですけどね。
(ってゆーか、ふつーこんなことで悩んだりしないって?)
CFLAGS = -I../include -I./ -I$(ORACLE_HOME)/precomp/public -Wall LDFLAGS = -L../lib -L$(ORACLE_HOME)/lib LIBS = ORA_LIBS = -lclntsh -ln8 -lnl8 -lnro8 -lsql8 -lclient8 \ -lvsn8 -lcommon8 -lskgxp8 -lgeneric8 -lmm \ -lnls8 -lcore8 -lplp8 -ltrace8 .SUFFIXES: .o .c .pc ←拡張子規則に使用する拡張子を列挙しておく PROC = proc CC = cc PROCFLAGS = INCLUDE=../include SYS_INCLUDE=/usr/include PARSE=NONE LINE=yes PCSRCS = sample.pc SRCS = sample.c OBJS = sample.o TARGET = sample prefix = all: $(TARGET) $(TARGET): $(OBJS) @echo リンク中 $@ $(CC) -o $@ $(OBJS) $(DEBUG_FLAGS) $(LDFLAGS) $(LIBS) $(ORA_LIBS) @echo Done. .c.o: @echo コンパイル中 $< $(CC) -c $< $(CFLAGS) $(DEBUG_FLAGS) @echo Done. .pc.c: @echo Pro*C コンパイル中 $< $(PROC) $(PROCFLAGS) iname=$< @echo Done. .pc.o: ←これがないと、"*.pc"から"*.o"がつくれない(できそうなんだけどね) @echo Pro*C コンパイル中 $< $(PROC) $(PROCFLAGS) iname=$< @echo Done. @echo コンパイル中 $< $(CC) -c $< $(CFLAGS) $(DEBUG_FLAGS) @echo Done. clean: rm -f $(OBJS) rm -f $(TARGET) rm -f core