总控makefile如何获取子目录makefile中改变了的变量

fenggui321 2013-09-28 01:34:27
总控project/makefile中用export var +=\
子project/app/sub.mk 中用 export var += xxxx

然后在总控makefile中 include ./app/sub.mk

如此能取到子makefeil变量修改的 var么? 自己试了下,感觉不行。有高人指点下有其他办法么?
...全文
279 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
糊涂的小白 2013-09-28
  • 打赏
  • 举报
回复
没效果是因为wildcard *.c是匹配当前目录的,而当前目录是你工程根目录,没有.c文件。

user@ubuntu:/dev/shm/test$ ls app/
1.c  2.c  sub.mk
user@ubuntu:/dev/shm/test$ cat app/sub.mk
export var += $(wildcard *.c)
user@ubuntu:/dev/shm/test$ cat Makefile
var +=
include ./app/sub.mk

default:
        @echo $(var)
user@ubuntu:/dev/shm/test$ make
3.c 4.c
user@ubuntu:/dev/shm/test$ ls
3.c  4.c  app  Makefile
user@ubuntu:/dev/shm/test$
我说过include就与写在一个makefile里面一样的效果。 如果你要匹配app下面的.c,需要用别的办法。 比如:

user@ubuntu:/dev/shm/test$ cat app/sub.mk
export var += $(wildcard $(subdir)/*.c)
user@ubuntu:/dev/shm/test$ cat Makefile
var +=

subdir=app
include $(subdir)/sub.mk

default:
        @echo $(var)
user@ubuntu:/dev/shm/test$ make
app/1.c app/2.c
user@ubuntu:/dev/shm/test$
fenggui321 2013-09-28
  • 打赏
  • 举报
回复
我子目录用的 var += $(wildcard *.c)
糊涂的小白 2013-09-28
  • 打赏
  • 举报
回复
“export var +=\”想表达一个什么效果? \为续行符,你想把下行的内容赋值给var?
糊涂的小白 2013-09-28
  • 打赏
  • 举报
回复
为何我的是有效的

user@ubuntu:/dev/shm$ cat app/sub.mk
var += xxx
user@ubuntu:/dev/shm$ cat Makefile
var +=

include ./app/sub.mk

default:
        @echo $(var)
user@ubuntu:/dev/shm$ make
xxx
user@ubuntu:/dev/shm$

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧