关于一个makefile中,用include引用其他目录下的makefile的问题。望高手解答,非常感谢!!!~~~~~~~~~~

关于一个makefile中,用include引用其他目录下的makefile的问题。望高手解答,非常感谢!!!~~~~~~~~~~,第1张

帮你测试了一下,需要改两个地方:

1.linux目录下的makefile文件里面

include /home/linux/a/a.mk

include /home/linux/b/b.mk

这两句要放到edit:a.o b.o之前

2.a.mk和b.mk里面

要改成:

a.o:a/a.c

cc -c a/a.c

b.o:b/b.c

cc -c b/b.c

一个makefile中引用另一个makefile,其写法与C语言include 类似。

make 命令开始时,会搜寻 include 所包含的其它 Makefile,并把其内容安置在当前的位置。

使用隐晦规则来书写makefile

Makefile.hello

运行结果:

Makefile文件可以使用其他命名来区分,如Makefile.hello,如果要单独执行Makefile.hello,只需要make -f Makefile.hello 或者 make --file Makefile.hello

include 其他makefile可包含路径,如果没有路径。

如果找不到该文件,报错。

如果打算无法找到Makefile.hello文件也要进行执行下去,只需在include前加个减号

make会继续执行下去。

书中提到:但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用 make 时,所有的 Makefile 都会受到它的影响,这绝不是你想看到的。在这里提这个事,只是为了告诉大家,也许有时候你的 Makefile 出现了怪事,那么你可以看看当前环境中有没有定义这个变量。

环境变量和自定义变量 -》类似于“全局变量”和“局部变量”

创建个环境变量CWR

通过env来查看所有环境变量

Makefile中输出该变量

@ 作用关闭命令回显

运行结果:

在Makefile中定义该变量

运行结果:

系统环境变量值被覆盖。

书中反复强调:不推荐把许多的变量都定义在系统环境中,这样,在我们执行不用的Makefile 时,拥有的是同一套系统变量,这可能会带来更多的麻烦。

不过我看很多厂商在编译系统镜像前,都会先source 一下厂商写的环境变量脚本。估计也是为了让每个模块共通的部分集中在环境变量中,使得模块的Makefile看起来更简洁更容易阅读。

其实你做得基本上是OK的

在main.o:main.cpp

这一行最后需要加上依赖的库文件,如

main.o:main.cpp libToolClasses.so

再试试,有问题再找我


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11758100.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存