谁熟悉UNIX的make命令和makefile写法的朋友,请进来看看(50分)

  • 主题发起人 主题发起人 laline
  • 开始时间 开始时间
L

laline

Unregistered / Unconfirmed
GUEST, unregistred user!
有如下Makefile

RM=OrNONE
.SUFFIXES: .pc .c .o

PROC=proc
PROCFLAGS= include=$(INCDIR) include=$(TUXDIR)/include include=$(TOPS_INCDIR) lines=yes sqlcheck=semantics userid=$(DB_USER_NAME)/$(DB_USER_PASSWORD)
CFLAGS=-g -c -I/usr/include -I$(TUXDIR)/include -I. -I$(TOPS_INCDIR) -I$(INCDIR)
LIBS= -lcom -ltsfeeh -ldbkey -lcryptoki -luser
#LIBS= -lcom
APPDIR=$(HOME)/tuxedo
[red]OBJSRC= ex1101.pc ex1605.pc EX1801.pc ex1601.pc ex1603.pc ex1109.pc ex1110.pc ex1111.pc ex1562.pc ex1501.pc ex1502.pc ex1505.pc ex1506.pc ex1701.pc ex1508.pc ex1124.pc exglob.pc bs011.pc QsExRemi.pc ex1108.pc ex1523.pc ex1524.pc ex1525.pc EX1528.pc EX1529.pc
OBJS=$(OBJSRC:.pc=.o)[/red]
SVCS=-s EX1506 -s EX1502 -s EX1501 -s EX1605 -s EX1801 -s EX1603 -s EX1109 -s EX1110 -s EX1111 -s EX1562 -s EX1505 -s EX1601 -s EX1508 -s EX1124 -s EX1108 -s EX1523 -s EX1524 -s EX1525 -s EX1528 -s EX1529

all: IMPRMTSVR
IMPRMTSVR:$(OBJS)
-tmshutdown -s $@
buildserver -o $@ /
-r $(RM) /
$(SVCS) /
-f "$(OBJS)" -f "-L$(LIBDIR) -L$(TOPS_LIBDIR)" -f "$(LIBS)"
mv $@ $(APPDIR)
-tmboot -s $@
.c.o:
$(CC) $(CFLAGS) /
-c $<
# -o $(<:.c=.o)
.pc.c:
$(PROC) $(PROCFLAGS) $<
.pc.o:
$(PROC) $(PROCFLAGS) $<
$(CC) $(CFLAGS) /
[red]c $(<:.pc=.c) /
-o $(<:.pc=.o)[/red]
lint:
lint -u -Q -D NOWAIT -I. -I$(INCDIR) $(OBJSRC:.pc=.c) $(OBJSRC1:.pc=.c)
clear:
@rm $(OBJS)
@rm $(OBJSRC:.pc=.c)

---------------------------------
请问上文中红色部分的写法是什么意思
 
OBJSRC= ex1101.pc ex1605.pc EX1801.pc ex1601.pc ex1603.pc ex1109.pc ex1110.pc ex1111.pc ex1562.pc ex1501.pc ex1502.pc ex1505.pc ex1506.pc ex1701.pc ex1508.pc ex1124.pc exglob.pc bs011.pc QsExRemi.pc ex1108.pc ex1523.pc ex1524.pc ex1525.pc EX1528.pc EX1529.pc
OBJS=$(OBJSRC:.pc=.o)[/red]
就是编译目标文件时需要这些库。
 
[red]c $(<:.pc=.c) /
-o $(<:.pc=.o)[/red]
应该是把.pc编译成.c和.o的文件吧!
 
to yeath:
我主要是不明白 $(<:.pc=.c) 中 < 是什么意思,
还有<后面的:和等式 .pc=.c 究竟是要向MAKE 命令
表达一种什么意思
 
把所有的.pc生成对应的c,比如test.pc就生成对应的.c
.pc=.o就是把所有的.pc生成对应的.o文件
 
$< 是表示当前 make 正处理的文件
而 .pc=.c 表示后缀转换(注意括号的存在),是 make 中的一种转换规则
 
多人接受答案了。
 
后退
顶部