如何在Gtk中使用makefile [重复]。

问题描述 投票:0回答:1

我的代码应该分为客户端、服务器和头文件。这是所有文件都在一个文件中时的makefile----------。

# change application name here (executable output name)
TARGET=BugTrack

# compiler
CC=gcc
# debug
DEBUG=-g
# optimisation
OPT=-O0
# warnings
WARN=-Wall

PTHREAD=-pthread

CCFLAGS=$(DEBUG) $(OPT) $(WARN) $(PTHREAD) -pipe

GTKLIB=`pkg-config --cflags --libs gtk+-3.0`

# linker
LD=gcc
LDFLAGS=$(PTHREAD) $(GTKLIB) -export-dynamic

OBJS= client.o 

all: $(OBJS)
    $(LD) -o $(TARGET) $(OBJS) $(LDFLAGS)

client.o: client.c
    $(CC) -c $(CCFLAGS) client.c  $(GTKLIB) -o client.o

clean:
    rm -f *.o $(TARGET)

这样就可以了。但是把最后一部分改成这样

OBJS= client.o server.o

all: $(OBJS)
    $(LD) -o $(TARGET) $(OBJS) $(LDFLAGS)

client.o: client.c
    $(CC) -c $(CCFLAGS) client.c header.h $(GTKLIB) -o client.o

server.o: server.c
    $(CC) -c $(CCFLAGS) server.c header.h $(GTKLIB) -o server.o

clean:
    rm -f *.o $(TARGET)

给我一个错误,说 fatal error: cannot specify -o with -c, -S or -E with multiple files.我怎么解决?

c gcc makefile gtk client-server
1个回答
1
投票

你不需要把头文件放到你的编译行中,所以只需要这样做。

OBJS= client.o server.o

all: $(OBJS)
    $(LD) -o $(TARGET) $(OBJS) $(LDFLAGS)

client.o: client.c
    $(CC) -c $(CCFLAGS) client.c $(GTKLIB) -o client.o

server.o: server.c
    $(CC) -c $(CCFLAGS) server.c $(GTKLIB) -o server.o

clean:
    rm -f *.o $(TARGET)

如果你需要添加头文件包含路径,那么你可以添加 -I<path>

© www.soinside.com 2019 - 2024. All rights reserved.