以Makefile作为依赖项的Makefile目标
我目前正在从事一个项目,在父文件夹中有几个应用程序,每当更新子文件夹中包含的库时,都需要重建这些应用程序。父文件夹中的应用程序是使用makefile构建的,库是使用各自文件夹中的单独makefile构建的。这看起来像:以Makefile作为依赖项的Makefile目标,makefile,dependencies,Makefile,Dependencies,我目前正在从事一个项目,在父文件夹中有几个应用程序,每当更新子文件夹中包含的库时,都需要重建这些应用程序。父文件夹中的应用程序是使用makefile构建的,库是使用各自文件夹中的单独makefile构建的。这看起来像: 父目录 附件1 附件2 生成文件 libdir1 生成文件 libdir2 生成文件 我目前正在为父目录中的makefile执行类似的操作 all : app1 app2 libs = libdir1/lib1.a libdir2/lib2.a .PHONY
- 父目录
- 附件1
- 附件2
- 生成文件
- libdir1
- 生成文件
- libdir2
- 生成文件
- libdir1
all : app1 app2
libs = libdir1/lib1.a libdir2/lib2.a
.PHONY : $(libs)
$(all) : $(libs)
#do stuff to make the apps
libdir1/lib1.a :
$(MAKE) -c libdir1
libdir2/lib2.a :
$(MAKE) -c libdir2
我的问题是,我不希望父目录的makefile中的应用重建,除非它“依赖”的makefile之一被更新。我知道目前发生这种情况的原因是我的LIB被声明为虚假的(因此它们总是重建),但这是我能够找出真正调用子makefiles的唯一方法
因此,我希望每个应用程序只在libdir的makefile中的任何一个实际执行某些操作时进行构建,并在构建应用程序之前调用每个libdir的makefile以“执行某些操作”
提前感谢您的帮助。您应该为库创建一个虚拟依赖项,以便始终处理它们的生成文件。下面是一个很好的示例和说明:对于大型makefile构建项目来说是一个很好的参考。多谢。当我有足够的代表时,我会回来投票支持你的答案;)或阅读“递归制造被认为有害”,并考虑使用更好的风格建议。