makefile-依赖项依赖项>>

问题描述 投票:3回答:3

根据我在网上阅读的内容,您可能会说:A

取决于B,而B取决于C-> A取决于C

因此,如果我们有一个如下所示的makefile:

CC=g++

OUTPUT=app.exe

SOURCES=$(wildcard *.cpp)
OBJECTS=$(patsubst %.cpp, %.o, $(SOURCES))


$(OUTPUT): $(OBJECTS)
    $(CC) -o $(OUTPUT) $(OBJECTS)

main.o: main.cpp a.hpp
    $(CC) -c main.cpp

a.hpp: b.hpp

我希望main.o依赖于b.hpp,因此,如果在上次编译b.hpp之后更改了main.o,则应该进行编译。但这不会发生。

我是否完全误解了,它根本无法按照我所描述的那样工作?如果是这样,main.o的目标应该是什么样?我是否必须遍历文件包含的所有标头,并且还使其与所有这些标头无关?

编辑

:正如萨姆·米勒(Sam Miller)所说的,即使a.hpp已更改,b.hpp的时间戳也不会更改,因为没有命令可以更新a.hpp。Sam Miller建议使用touch命令。但是由于我在Windows上,并且找不到简单的等效项,因此我编写了一个名为WinTouch的小程序。效果很好,谢谢大家。

EDIT2

Chnossos向我展示了关于makefile的许多知识。我尝试了他提出的示例生成文件,该文件运行得很好,似乎以后会让我的生活更轻松。

根据我在网上阅读的内容,您可以说:A取决于B,B取决于C-> A取决于C因此,如果我们有一个如下所示的makefile:CC = g ++ OUTPUT = app.exe = $(通配符* ....

c++ makefile
3个回答
2
投票

我是否完全误解了,它根本不符合我所描述的方式?


2
投票

如果目标a.hpp取决于b.hpp,则需要指示a.hpp已更改:


1
投票

我是否完全误解了,并且它无法按照我的方式工作完全描述过吗?

© www.soinside.com 2019 - 2024. All rights reserved.