Я хочу настроить систему Make-файлов в моих каталогах проекта так, чтобы правила определили в, каждый будет определен в других. Скажем, например, у меня есть каталог, названный "тестом", и внутри "test.c", но я хочу создать test.c использование правила, определенного в Make-файле в корневом каталоге
Вот пример
#Makefile (inside base dir)
%.o: %.c
gcc -Wall -c $^
all:
make -C test out.a
#test/Makefile
out.a: test.o
ar rcs $@ $^
#test/test.c
int main() {
return 0;
}
#inside root dir
$make
make -C test
make[1]: Entering directory `test'
cc -c -o test.o test.c
/usr/ucb/cc: language optional software package not installed
make[1]: *** [test.o] Error 1
make[1]: Leaving directory `test'
make: *** [all] Error 2
Заметьте, как это вызывает cc вместо моего правила с помощью gcc определенный в корневом make-файле.
Таким образом, я не хочу должным быть определять то же правило в каждом Make-файле
Для Microsoft nmake используйте следующее:
!INCLUDE ..\makefile.defs
(предполагает, что makefile.defs в родительском каталоге содержит базовые правила)
Для Gnu make используйте это:
include ../makefile.defs
см. http://www.gnu.org/software/automake/manual/make/Include.html