2016-11-23 67 views
0

我在Debian Jessie下構建的C項目存在問題。現在做了一些事情後,我需要使用MySQL,所以我下載了庫並嘗試更新我的Makefile。將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 [email protected] $(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 

當我試圖讓我收到「致命錯誤:my_global.h沒有這樣的文件或目錄」。但是,如果我嘗試在單個測試文件上的MySQL並編譯它與

gcc -o test test.c -I/usr/include/mysql -lmysqlclient 

它的工作原理。我犯了什麼錯誤?

在此先感謝

+0

如果你運行'清洗後make',什麼是輸出? make'調用的命令是幹什麼的?請發佈該輸出。實際上,請發佈構建程序的* full *輸出。 –

回答

0

如果您想向我們展示了編譯器的輸出,或自己檢查它,你會立即看到你在命令行中運行的是不一樣的,在所有的運行的是什麼:特別是make不會將-I/usr/include/mysql標誌添加到命令行。

這是因爲在你的makefile設置:

INC = -I/usr/include/mysql 
在你的makefile

但無處(因爲你已經證明它)是實際使用的變量INC,所以這基本上是一個無操作。

由於您使用標準的GNU編譯製作的規則,你應該設置標準GNU make變量:

CPPFLAGS = -I/usr/include/mysql