Есть следующая иерархия в рабочей директории:
config (directory)
main.cpp
Makefile
содержимое Makefile в рабочей директории:
main: main.o
g++ -Wall -std=c++1y main.o ./config/load_config.o -o main
main.o: config/load_config.o
g++ -Wall -std=c++1y -o main.o -c main.cpp
clean:
rm *.o
в директории config лежит:
load_config.cpp
load_config.h
Makefile
содержимое config/Makefile
load_config.o: load_config.cpp
g++ -Wall -std=c++1y -o load_config.o -c load_config.cpp
clean:
rm *.o
если рабочая директория config, то config/Makefile выполняется без ошибок. В результате имеем файл config/load_config.o. Делаем cd ../ После этого выполняем make в главной директории программу собирается нормально. Но если отсутствует config/load_config.o, то программа уже не собирается. Вопрос в следующем как изменить главный Makefile, чтобы он сначала выполнял make в папке config(собирал config/load_config.o)
main.o: config/load_config.o: как и в любом правиле, это зависимость цели (в данном случае —main.o) от пререквизита (config/load_config.o). я это ваше правило немного изменил, потому что, по-моему, оно у вас было написано нелогично. – aleksandr barakin Jan 19 '17 at 14:56