Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 更改makefile后未编译C makefile_Mysql_C_Makefile - Fatal编程技术网

Mysql 更改makefile后未编译C 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

我有一个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: 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
)您上次没有使用的?