У меня есть следующая структура каталогов (в Ubuntu):
MyProject/
Here is my Makefile
MyProject/src/headers
Here are more subfolders and .hpp files
MyProject/src/sources
Here are two .cpp files (main.cpp and another.cpp)
Поэтому я использовал этот учебник для написания моего make-файла, который выглядит следующим образом:
cppsrc = $(wildcard src/sources/*.cpp)
obj = $(cppsrc:.cpp=.o)
flags = -I/usr/include/boost_1_72_0/ -pthread
cross: $(obj)
i686-atom-linux-gnu-g++ -o $@ $^ $(flags)
Обнаруживает файл. cpp в подкаталоге (ууу!). Но он не обнаруживает заголовочные файлы, включенные в файл. cpp. Поэтому я включил заголовок в другой. cpp, например:
#include "src/headers/another.hpp"
Команда make cross выдает мне сообщение об ошибке:
g++ -c -o src/sources/another.o src/sources/another.cpp
src/sources/another.cpp:6:10: fatal error: src/headers/another.hpp: No such file or directory
#include "src/headers/another.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
<builtin>: recipe for target 'src/sources/another.o' failed
make: *** [src/sources/another.o] Error 1
Сообщение об ошибке заставляет меня поверить, что makeapp ищет файл заголовка в такой позиции:
MyProject/src/sources/src/headers/
Верно ли мое предположение? Что я могу сделать, чтобы решить эту проблему? Надеюсь, что кто-нибудь сможет мне помочь. Заранее спасибо.