gpt4 book ai didi

以 makefile 作为依赖项的 Makefile 目标

转载 作者:行者123 更新时间:2023-12-02 22:11:44 26 4
gpt4 key购买 nike

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

  • 父目录
    • 应用1
    • 应用2
    • 生成文件
      • 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。这是一个很好的示例和解释:http://owen.sj.ca.us/~rk/howto/slides/make/slides/makerecurs.html

关于以 makefile 作为依赖项的 Makefile 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17011509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com