Ответ 1
Вы не предоставляете достаточно информации, чтобы сказать наверняка: в частности, вы не говорите, где файл sqlite3.h
на самом деле находится в вашей файловой системе. Однако, исходя из того, что вы показываете, я подозреваю, что вам нужно изменить переменную INCLUDES
, чтобы это:
INCLUDES = lib/sqlite
(иначе измените #include
в вашем коде как #include "sqlite/sqlite3.h"
). Предполагается, что заголовочный файл находится в том же каталоге, что и исходный файл sqlite3.c
.
Обратите внимание, что это плохая/запутанная реализация. Вы должны помещать флаг -I
в переменную INCLUDES
:
INCLUDES = -Ilib/sqlite
...
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) $(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
INCLUDES
- это множественное число, которое может заставить кого-то поверить, что они могут добавить несколько каталогов в эту переменную, но если вы оставите его так, как вы это делаете, это вызовет странные ошибки компилятора:
INCLUDES = lib/sqlite another/dir
...
$(PROGRAM): $(SOURCE)
$(CC) $(SOURCE) -I$(INCLUDES) -o$(PROGRAM) $(LDFLAGS)
добавит флаги -Ilib/sqlite another/dir
... обратите внимание, как второй каталог не имеет опции -I
.
Конечно, по соглашению вы должны использовать CPPFLAGS
(для флагов препроцессора C), а не INCLUDES
, но...:)