Mysql 更改makefile后未编译C makefile
我有一个makefile,我希望在更新后能够执行它Mysql 更改makefile后未编译C makefile,mysql,c,makefile,Mysql,C,Makefile,我有一个makefile,我希望在更新后能够执行它 EXE = sensor log LDIR = lib CC = gcc CFLAGS = -Wall -c $(DEFINES) LFLAGS = -Wall -L./$(LDIR) -Wl,-rpath=./$(LDIR) CDFLAGS = -Wall -c -fPIC LDFLAGS = -Wall -shared DEFINES = -D SET_ID=20 .SUFFIXES: all: sensor log debug: D
EXE = sensor log
LDIR = lib
CC = gcc
CFLAGS = -Wall -c $(DEFINES)
LFLAGS = -Wall -L./$(LDIR) -Wl,-rpath=./$(LDIR)
CDFLAGS = -Wall -c -fPIC
LDFLAGS = -Wall -shared
DEFINES = -D SET_ID=20
.SUFFIXES:
all: sensor log
debug: DEFINES += -DDEBUG
debug: all
$(EXE) : % : %.o $(LDIR)/liblist.so $(LDIR)/libtcpsocket.so
@echo "\n***** LINKING $< *****"
$(CC) $(LFLAGS) $< -llist -ltcpsocket -lpthread -lm -o $@
liblist libmyqueue libtcpsocket libsensor_db : % : $(LDIR)/%.so
%.o : %.c %.check
@echo "\n***** COMPILING $< *****"
$(CC) $(CFLAGS) -o$@ $<
$(LDIR)/lib%.so : %.c %.check
$(eval name = $(basename $<))
@echo "\n***** COMPILING LIB $< *****"
$(CC) $(CDFLAGS) $<
mkdir -p $(LDIR)
@echo "\n***** LINKING LIB $< *****"
$(CC) $(LDFLAGS) $(name).o -o $(LDIR)/lib$(name).so
.PHONY : clean clean-all *.check
%.check : %.c
@echo "\n***** CPPCHECK $< *****"
cppcheck --enable=all $^
clean:
rm -f *.o $(EXE) *~
clean-all: clean
rm -rf $(LDIR)
EXE=传感器日志
LDIR=lib
CC=gcc
CFLAGS=-Wall-c$(定义)
LFLAGS=-Wall-L./$(LDIR)-Wl,-rpath=./$(LDIR)
CDFLAGS=-Wall-c-fPIC
LDFLAGS=-Wall-shared
DEFINES=-D SET_ID=20
.后缀:
所有:传感器日志
调试:定义+=-DDEBUG
调试:全部
$(EXE):%:%.o$(LDIR)/liblist.so$(LDIR)/libtcpsocket.so
@echo“\n****链接$<*******”
$(CC)$(LFLAGS)$<-llist-ltcpsocket-lpthread-lm-o$@
liblist libmyqueue libtcpsocket libsensor_db:%:$(LDIR)/%。所以
%.o:%.c%。检查
@echo“\n****编译$<*******”
$(CC)$(CFLAGS)-o$@$<
$(LDIR)/lib%。so:%.c%。检查
$(eval name=$(basename$对于DEBUG
参数,最简单的方法是在命令行中添加一个参数。可以通过在第一个目标之前添加下一行来实现:
ifeq ($(DEBUG),1)
DEFINES += -DDEBUG
endif
即使如此,要将DEBUG
参数仅限于命令行,请执行以下操作:
ifeq ("$(origin DEBUG)", "command line")
ifeq ($(DEBUG),1)
DEFINES += -DDEBUG
endif
endif
然后在调试模式下进行编译:
$ make DEBUG=1
对于mysql,只需像这样使用shell
命令:
CFLAGS := -Wall -c $(DEFINES) $(shell mysql_config --cflags --libs)
这不会有帮助,问题是如果您先执行make
,然后执行make DEBUG=1
,则不会使用后一个命令重新生成源代码,而且“修复”非常重要。这一点尚不清楚。是否希望make在修改makefile时重建对象,或者在使用参数执行makefile时重建对象(例如,make DEBUG=true
)您上次没有使用的?