当前位置 : 主页 > 手机开发 > 其它 >

继承 – Make,继承子目录Makefile中的规则

来源:互联网 收集:自由互联 发布时间:2021-06-19
我想在我的项目目录中建立一个Makefile系统,以便在其他规则中定义规则.比方说,我有一个名为“test”的目录,里面是“test.c”,但我想使用根目录下Makefile中定义的规则构建test.c 这是一个
我想在我的项目目录中建立一个Makefile系统,以便在其他规则中定义规则.比方说,我有一个名为“test”的目录,里面是“test.c”,但我想使用根目录下Makefile中定义的规则构建test.c

这是一个例子

#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

请注意它是如何使用根makefile中定义的gcc调用cc而不是我的规则.

总之,我不想在每个Makefile中定义相同的规则

对于Microsoft nmake,请使用:

!INCLUDE ..\makefile.defs

(假设父目录中的makefile.defs包含基本规则)

对于Gnu make,请使用:

include ../makefile.defs

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

网友评论