Makefile в подкаталоге моего проекта не видит путь включения ТОЛЬКО, когда он используется из основного Makefile моего проекта. У меня нет большого опыта работы с Makefile, и многое из того, что я читал, довольно запутанно. Вот схема моего каталога (с тем, что я до сих пор, так как я только начал проект):Makefile не может найти include path
main/
Inventory/
Item.h
Item.cpp
Makefile
tools/
include/
json/
json.h
jsoncpp.cpp
Makefile
main.cpp
Makefile
Вот Makefile в главном каталоге:
INCLUDE = -IInventory/
CC = g++
DEP = tools/jsoncpp.o Inventory/Item.o
Main: main.o $(DEP)
cd tools/ && make
cd Inventory/ && make
$(CC) -o Main main.o $(DEP) $(INCLUDE)
main.o main.cpp
$(CC) -c main.cpp $(INCLUDE)
Вот является Makefile в справочник инструментов:
INCLUDE = -Iinclude/
CC = g++
jsoncpp.o: jsoncpp.cpp
$(CC) -c jsoncpp.cpp $(INCLUDE)
Когда я вызываю make из инструментов /, он работает нормально. Но когда я звоню сделать из главного каталога, я получаю эту ошибку:
g++ -c -o tools/jsoncpp.o tools/json.cpp
tools/jsoncpp.cpp:76:23: fatal error: json/json.h: No such file or directory
#include "json/json.h"
^
compilation terminated.
Теперь я отчасти считаю, что он не может найти каталог включать по какой-либо причине, но первая строка в этой ошибке довольно странно для меня из-за этого странного разрыва между g ++ и -c. Поскольку мой проект скоро станет довольно большим, как я могу это исправить?
Вот что у меня есть. jsoncpp.cpp уже имеет '#include'. Вот почему мой 'INCLUDE' имеет только' -Iinclude/'. –
Cotant
Итак, вы находитесь в основном/компилировании инструментов/json.cpp и имеете только -Iinclude вместо -Itools/include? – KIIV
Нет, что находится в Makefile в инструментах /. Я попытался поместить его в Makefile в основную /, но это не сработало. – Cotant