makefile:如何指定头文件

makefile: how to specify header files

我正在尝试为我的所有 cpp 项目编写一个 makefile。从网上搜索后,我制作了一个如下的makefile:

g++11=g++ -std=c++11 -stdlib=libc++

CPPFILES=$(wildcard *.cpp)
OBJFILES=$(CPPFILES:.cpp=.o)


res.out: $(OBJFILES)
    $(g++11) -lncurses -o $@ $^ -g

#obj/%.o: %.cpp
%.o: %.cpp
    $(g++11) -c -o $@ $< -g


clean:
    rm *.o *.out

我尝试使用此文件编译我的 cpp 项目并且运行良好。

但是,当我对头文件进行一些更改时,它不再起作用,因为此生成文件无法检测到头文件中的修改。

有什么简单的方法可以在 makefile 中指定头文件吗?
Ofc我不想一一说明。

首先要了解make的概念。

Make 不仅用于编译 C++,它还是一个从其他文件构建产品(文件)的通用工具。当您发出 make 时,它会根据依赖项的文件更改日期检查是否应该重建顶级产品。如果需要重建,首先检查所有依赖项是否应该重建……等等。这些砖叫做规则。

这是一个规则:

target: dependency1 dependency2 ...
  command1 to produce targets
  command2

如果是 CPP 项目:

myapp: myapp.cpp myapp.hpp
  g++ myapp.cpp -o myapp

更多信息:http://www.cs.cmu.edu/~gkesden/412-18/fall01/projects/proj1/make/makeintro.html