Сделайте, наследуйте правила в Make-файле подкаталога

Я хочу настроить систему 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-файле

6
задан Mike 6 March 2010 в 22:44
поделиться

2 ответа

Для Microsoft nmake используйте следующее:

!INCLUDE ..\makefile.defs

(предполагает, что makefile.defs в родительском каталоге содержит базовые правила)

Для Gnu make используйте это:

include ../makefile.defs

см. http://www.gnu.org/software/automake/manual/make/Include.html

8
ответ дан 10 December 2019 в 00:37
поделиться

Вы можете включить один makefile в другой.

2
ответ дан 10 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: