【问题标题】:Makefile target with makefile as dependency以 makefile 作为依赖的 Makefile 目标
【发布时间】:2013-06-05 09:05:04
【问题描述】:

我目前正在处理一个项目,我在父文件夹中有几个应用程序,只要更新子文件夹中包含的库,就需要重新构建这些应用程序。父文件夹中的应用程序是使用 makefile 构建的,而库是使用相应文件夹中的单独 makefile 构建的。这看起来像:

  • 父目录
    • app1
    • app2
    • 生成文件
      • libdir1
        • 生成文件
      • libdir2
        • 生成文件

我目前正在为父目录中的 makefile 做类似的事情

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 之一被更新。我知道目前发生这种情况的原因是我将我的库声明为 PHONY(所以他们总是重建),但这是我能弄清楚实际调用子 makefile 的唯一方法。

所以,我希望每个应用程序仅在任何一个 libdirs makefile 实际执行某些操作时构建,并在构建应用程序之前调用每个 libdir 的 makefile 将“执行某些操作”。

提前感谢您的帮助。

【问题讨论】:

    标签: makefile dependencies


    【解决方案1】:

    您应该为这些库创建一个虚拟依赖项,以便始终处理它们的 Makefile。这是一个很好的例子和解释:http://owen.sj.ca.us/~rk/howto/slides/make/slides/makerecurs.html

    【讨论】:

    • 对于大型 makefile 构建项目的一个很好的参考。非常感谢。当我有足够的代表时,我会回来并支持你的答案;)
    • 或者阅读“Recursive Make Considered Harmful”并考虑使用其中建议的更好的样式。
    猜你喜欢
    • 2021-02-24
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多