【发布时间】:2016-11-12 20:34:57
【问题描述】:
我正在尝试为我的所有 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 无法检测到头文件中的修改。
有什么简单的方法可以在 makefile 中指定头文件吗?
Ofc 我不想一一指定。
【问题讨论】:
-
查找“自动生成依赖”
-
您可以将头文件添加为
".o"规则的依赖项。 -
@Thomas Matthews - 除了强制 OP “一个一个地指定它们”(他不想这样做)之外,每当任何头文件发生更改时,它也会强制完全重建 - 包括编译单元不要依赖于更改的标题。自动依赖生成使用编译器(实际上是预处理器)根据源文件中的
#includes 生成依赖列表,因此更改标头只会导致重新编译依赖它的对象。
标签: c++ makefile header-files