make,继承子目录Makefile中的规则
我想在我的项目目录中建立一个 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
请注意它如何调用 cc 而不是我的规则使用根 makefile 中定义的 gcc。
总之,我不想在每个 Makefile 中定义相同的规则
I want to set up a system of Makefiles in my project directories so that the rules defined in one will be defined in others. Let's say for example I have a directory called "test" and inside is "test.c" but I want to build test.c using a rule defined in a Makefile in the root directory
Here is an example
#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
Notice how it invokes cc instead of my rule using gcc defined in the root makefile.
In summary, I don't want to have to define the same rule in each Makefile
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于 Microsoft nmake,使用此:(
假设父目录中的 makefile.defs 包含基本规则)
对于 Gnu make,使用此:
请参阅 http://www.gnu.org/software/automake/manual/make/Include.html
For Microsoft nmake, use this:
(assumes makefile.defs in parent dir contains the base rules)
For Gnu make, use this:
see http://www.gnu.org/software/automake/manual/make/Include.html
您可以将一个makefile 包含到另一个makefile 中。
You can include one makefile into another.