Самый простой способ - использовать полный путь для флагов компилятора:
INC_DIR = -I$(CURDIR)/ParentDir -I$(CURDIR)/ParentDir/LinkToSrcDir
Просто для ясности: когда компилятор ищет заголовочные файлы, используя относительный путь, он всегда начинается с каталога исходный файл появляется в. Он не начинается с рабочего каталога, в котором вызывается компилятор.
С G CC руководство , например:
препроцессор ищет включенные заголовочные файлы ... сначала относительно каталога текущего файла
В вашем случае текущий файл равен LinkToSrcDir/Src.h
, поэтому все пути будет развернут относительно каталога LinkToSrcDir
.
Когда вы говорите ссылку выше, я предполагаю, что вы имеете в виду ссылку symboli c. В этом случае вы, возможно, не сможете использовать что-то вроде -I..
, потому что это даст вам родителя каталога, с которым вы связаны.
У вас почти нет другого выбора, кроме как использовать полный путь в вашем -I
вариантов.