From 39fdcb0c57bfeba598f00d77f190e731f26b25a1 Mon Sep 17 00:00:00 2001 From: sola.lu <sola.lu@greentest.com.cn> Date: 周四, 24 4月 2025 18:25:01 +0800 Subject: [PATCH] 1.修改一下,把当前库改为刚从origin仓库拉去下来,然后添加了cmake构建文件的状态。 --- libscpi/Makefile | 68 +++++++++++++++++++++++++--------- 1 files changed, 50 insertions(+), 18 deletions(-) diff --git a/libscpi/Makefile b/libscpi/Makefile index c703e8a..9a0b5ee 100644 --- a/libscpi/Makefile +++ b/libscpi/Makefile @@ -1,28 +1,44 @@ +VERSION = 2.1.0 LIBNAME = scpi -CFLAGS += -Wextra -Wmissing-prototypes -Wimplicit -g -Iinc -LDFLAGS += -Wl,--as-needed -TESTFLAGS += -lcunit $(CFLAGS) +CFLAGS += -Wextra -Wmissing-prototypes -Wimplicit -Iinc +CFLAGS_SHARED += $(CFLAGS) -fPIC +LDFLAGS += -lm -Wl,--as-needed +#TESTCFLAGS += $(CFLAGS) `pkg-config --cflags cunit` +#TESTLDFLAGS += $(LDFLAGS) `pkg-config --libs cunit` +TESTCFLAGS += $(CFLAGS) +TESTLDFLAGS += $(LDFLAGS) -lcunit OBJDIR=obj +OBJDIR_STATIC=$(OBJDIR)/static +OBJDIR_SHARED=$(OBJDIR)/shared DISTDIR=dist TESTDIR=test +PREFIX := $(DESTDIR)/usr/local +LIBDIR := $(PREFIX)/lib +INCDIR := $(PREFIX)/include + STATICLIBFLAGS = rcs +SHAREDLIBFLAGS = $(LDFLAGS) -shared -Wl,-soname,$(SHAREDLIB) STATICLIB = lib$(LIBNAME).a +SHAREDLIB = lib$(LIBNAME).so +SHAREDLIBVER = $(SHAREDLIB).$(VERSION) SRCS = $(addprefix src/, \ - debug.c error.c fifo.c ieee488.c \ + error.c fifo.c ieee488.c \ minimal.c parser.c units.c utils.c \ - lexer.c \ + lexer.c expression.c \ ) -OBJS = $(addprefix $(OBJDIR)/, $(notdir $(SRCS:.c=.o))) +OBJS_STATIC = $(addprefix $(OBJDIR_STATIC)/, $(notdir $(SRCS:.c=.o))) +OBJS_SHARED = $(addprefix $(OBJDIR_SHARED)/, $(notdir $(SRCS:.c=.o))) HDRS = $(addprefix inc/scpi/, \ - scpi.h constants.h debug.h error.h \ + scpi.h constants.h error.h \ ieee488.h minimal.h parser.h types.h units.h \ + expression.h \ ) \ $(addprefix src/, \ lexer_private.h utils_private.h fifo_private.h \ @@ -37,39 +53,55 @@ TESTS_OBJS = $(TESTS:.c=.o) TESTS_BINS = $(TESTS_OBJS:.o=.test) -.PHONY: all clean static test +.PHONY: all clean static shared test install -all: static +all: static shared static: $(DISTDIR)/$(STATICLIB) + +shared: $(DISTDIR)/$(SHAREDLIBVER) clean: $(RM) -r $(OBJDIR) $(DISTDIR) $(TESTS_BINS) $(TESTS_OBJS) test: $(TESTS_BINS) - for t in $(TESTS_BINS); do ./$$t; done + $(TESTS_BINS:.test=.test &&) true -$(OBJDIR): +install: $(DISTDIR)/$(STATICLIB) $(DISTDIR)/$(SHAREDLIBVER) + test -d $(PREFIX) || mkdir $(PREFIX) + test -d $(LIBDIR) || mkdir $(LIBDIR) + test -d $(INCDIR) || mkdir $(INCDIR) + test -d $(INCDIR)/scpi || mkdir $(INCDIR)/scpi + install -m 0644 $(DISTDIR)/$(STATICLIB) $(LIBDIR) + install -m 0644 $(DISTDIR)/$(SHAREDLIBVER) $(LIBDIR) + install -m 0644 inc/scpi/*.h $(INCDIR)/scpi + +$(OBJDIR_STATIC): + mkdir -p $@ + +$(OBJDIR_SHARED): mkdir -p $@ $(DISTDIR): mkdir -p $@ -$(OBJDIR)/%.o: src/%.c +$(OBJDIR_STATIC)/%.o: src/%.c $(HDRS) | $(OBJDIR_STATIC) $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< -$(DISTDIR)/$(STATICLIB): $(OBJS) - $(AR) $(STATICLIBFLAGS) $(DISTDIR)/$(STATICLIB) $(OBJS) +$(OBJDIR_SHARED)/%.o: src/%.c $(HDRS) | $(OBJDIR_SHARED) + $(CC) -c $(CFLAGS_SHARED) $(CPPFLAGS) -o $@ $< +$(DISTDIR)/$(STATICLIB): $(OBJS_STATIC) | $(DISTDIR) + $(AR) $(STATICLIBFLAGS) $(DISTDIR)/$(STATICLIB) $(OBJS_STATIC) -$(OBJS): $(HDRS) $(DISTDIR) $(OBJDIR) $(SRCS) - +$(DISTDIR)/$(SHAREDLIBVER): $(OBJS_SHARED) | $(DISTDIR) + $(CC) $(SHAREDLIBFLAGS) -o $(DISTDIR)/$(SHAREDLIBVER) $(OBJS_SHARED) $(TESTDIR)/%.o: $(TESTDIR)/%.c - $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< + $(CC) -c $(TESTCFLAGS) $(CPPFLAGS) -o $@ $< $(TESTDIR)/%.test: $(TESTDIR)/%.o $(DISTDIR)/$(STATICLIB) - $(CC) $(TESTFLAGS) $< $(DISTDIR)/$(STATICLIB) -o $@ $(LDFLAGS) + $(CC) $< -o $@ $(DISTDIR)/$(STATICLIB) $(TESTLDFLAGS) -- Gitblit v1.9.1