将MySQL添加到我的Makefile会产生问题

时间:2016-11-23 15:28:55

标签: mysql c makefile

我在Debian Jessie下构建的C项目有问题。现在做了一些事后我需要使用MySQL,所以我下载了库并尝试更新我的Makefile。

这是我现在的 Makefile

CC = gcc
CFLAGS = -Wall -Wextra 
LDFLAGS = -lbluetooth -lpthread -lmysqlclient
LFLAGS = -lm
INC = -I/usr/include/mysql

SOURCES = stb.c btscan.c and.c gima.c database.c
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = stb

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(CFLAGS) $(OBJECTS) -o $@ $(LFLAGS) $(LDFLAGS)

stb.o: btscan.h and.h gima.h database.h

btscan.o: btscan.h

and.o: and.h

gima.o: gima.h

database.o: database.h

clean:
    @rm -f *.o *.out stb

这是我想要使用库的文件

stb.c

    #include "btscan.h"
    #include "and.h"
    #include "gima.h"
    #include "database.h"

    struct device* bt_devices; 
    struct device* ble_devices;     

    int main(void) {

        //-------------------------------- DATABASE CONNECTION ----------------

        //MYSQL *con = mysql_init(NULL);

....... }

最后 database.h

#ifndef _DATABASE_H
#define _DATABASE_H

#include <my_global.h>
#include <mysql.h>

#endif

当我试图让我收到&#34;致命错误:my_global.h没有这样的文件或目录&#34;。但是,如果我在单个测试文件上尝试MySQL并使用

进行编译
gcc -o test test.c -I/usr/include/mysql -lmysqlclient

它有效。我犯了哪个错误?

提前致谢

1 个答案:

答案 0 :(得分:0)

如果您向我们展示了编译器的输出,或者自己检查它,您会立即看到您在命令行上运行的内容与make正在运行的内容完全不同:特别是make没有将-I/usr/include/mysql标志添加到命令行。

那是因为在你的makefile中你设置了:

INC = -I/usr/include/mysql

但你的makefile中没有任何地方(如你所示)是实际使用的变量INC,所以这实际上是一个无操作。

由于您使用的是标准GNU make编译规则,因此您应该设置标准GNU make变量:

CPPFLAGS = -I/usr/include/mysql