Makefile 编译多个目标文件
Makefile编译多个目标文件
1
TARGET := signal_send signal_recieve method_send method_recieve
CC := gcc
CFLAGS := `pkg-config --cflags dbus-1`
LDFLAGS := `pkg-config --libs dbus-1`
all: $(TARGET)
signal_send: signal_send.c
$(CC) $< -o $@ $(CFLAGS) $(LDFLAGS)
signal_recieve: signal_recieve.c
$(CC) $< -o $@ $(CFLAGS) $(LDFLAGS)
method_send: method_send.c
$(CC) $< -o $@ $(CFLAGS) $(LDFLAGS)
method_recieve: method_recieve.c
$(CC) $< -o $@ $(CFLAGS) $(LDFLAGS)
clean:
rm -rf $(TARGET)
.PHONY:clean
2
CC = gcc
TARGET1 = enroll_sync_so_app
TARGET2 = verify_sync_so_app
LIBSPATH = /usr/lib/x86_64-linux-gnu/
PLATFORM = linux32
#LIBS = /usr/local/lib -lusb-1.0
LIBS = -lusb-1.0 -lm -lpthread -I. -L. -lCSAlgDll
INC = /usr/include/libusb-1.0
EXCHAR = -fexec-charset=GB18030
# Source files
SRCS1 = enroll_sync_so_app.c xqh_alg.c usb_ops.c
SRCS2 = verify_sync_so_app.c xqh_alg.c usb_ops.c
# Object files
OBJS1 = $(SRCS1:.c=.o)
OBJS2 = $(SRCS2:.c=.o)
# Make everything
all: $(TARGET1) $(TARGET2)
$(TARGET1): $(OBJS1)
$(CC) $(CFLAGS) $(EXCHAR) -o $(TARGET1) $(OBJS1) $(LIBS)
$(OBJS1): %.o: %.c
$(CC) -c $(CFLAGS) $(EXCHAR) -o $@ $< -I$(INC)
#
$(TARGET2): $(OBJS2)
$(CC) $(CFLAGS) $(EXCHAR) -o $(TARGET2) $(OBJS2) $(LIBS)
$(OBJS2): %.o: %.c
$(CC) -c $(CFLAGS) $(EXCHAR) -o $@ $< -I$(INC)
# Clean all object files...
#
clean:
$(RM) $(OBJS1) $(TARGET1)
$(RM) $(OBJS2) $(TARGET2)
该博客介绍了如何使用Makefile来编译多个目标文件。通过定义目标、编译器、编译标志以及依赖关系,实现了对signal_send、signal_recieve、method_send和method_recieve四个目标文件的构建。在编译过程中,利用pkg-config获取dbus-1的编译和链接选项,并在清理部分删除所有目标文件。
2万+

被折叠的 条评论
为什么被折叠?



