gcc 4.4.1 C99
我正在创建客户端服务器应用程序.
我有一个编译所有文件的Makefile.但是,我想创建2个目标(二进制文件),一个名为clt和svr.并希望Makefile为它们创建2个单独的目录,称为./client和./server?
到目前为止,我已经对我的Makefile做了这个.这只会创造svr.我不确定如何为要创建的客户端添加第二个目标.
希望你理解我的观点?
非常感谢任何建议,
OBJECT_FILES = server.o client.o cltsvr_ults.o
CFLAGS = -ggdb -Wall -pthread
LIBS = -lpthread
CC = gcc
svr: $(OBJECT_FILES)
$(CC) $(CFLAGS) $(OBJECT_FILES) $(LIBS) -o svr
client.o: client.c cltsvr_ults.h
$(CC) -c client.c
server.o: server.c cltsvr_ults.h
$(CC) -c server.c
cltsvr_ults.o: cltsvr_ults.c
$(CC) -c cltsvr_ults.c
clean:
rm svr *.o *~
Run Code Online (Sandbox Code Playgroud)
你还没有解释如何制作clt,对象是什么.svr的对象列表看起来很奇怪 - 它应该真的有client.o吗?我将假设clt由client2.o和cltcvr_ults.o组成.这个makefile应该做你想要的,包括制作目录:
SVR_OBJECT_FILES = server.o client.o cltsvr_ults.o
CLT_OBJECT_FILES = client2.o cltsvr_ults.o
CFLAGS = -ggdb -Wall -pthread
LIBS = -lpthread
CC = gcc
all: client/clt server/svr
client/clt: $(CLT_OBJECT_FILES)
server/svr: $(SVR_OBJECT_FILES)
client/clt server/svr:
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) $^ $(LIBS) -o $@
client.o client2.o server.o: cltsvr_ults.h
%.o: %.c
$(CC) -c $<
clean:
rm -f client/clt server/svr *.o *~