日期:2014-05-16  浏览次数:20837 次

总控makefile如何获取子目录makefile中改变了的变量
总控project/makefile中用export  var +=\
子project/app/sub.mk 中用 export  var += xxxx 

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

如此能取到子makefeil变量修改的 var么? 自己试了下,感觉不行。有高人指点下有其他办法么?
makefile

------解决方案--------------------
没效果是因为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$