我有一个包含多个文件夹的项目:
chipCloudList
所有Project
|_ include/
| '- Eigen/
|_ obj/
|_ src/
|_ makefile
个文件都在.cpp
中,并且与src/
中的多个.hpp
文件以及与特征库的文件具有依赖关系。
现在,每当我编辑源文件时,我都可以使用make命令,但是当我更改头文件时,它会告诉我include/
是最新的。
我已经尝试了几个我在类似问题上找到的示例,并且我已经阅读了一些关于makefile的教程,但我无法使其正常工作。
每次编译时,如果使用特征库的.cpp被修改,它需要非常长的时间,就像它再次读取所有Eigen头一样。
我的makefile:
all
谢谢!
答案 0 :(得分:0)
您必须明确告诉make
您的目标依赖于头文件。
有许多自动方法可以执行此操作,但您也可以只将标题文件添加到SOURCES
列表中(现在只包含.cpp
个文件)。
答案 1 :(得分:0)
最简单的方法是使所有头文件每个目标文件的先决条件:
INCDIR := include
HEADERS := $(notdir $(wildcard $(INCDIR)/*.h))
$(OBJDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) $(HEADERS)
...
这是粗略但有效。只要任何头文件发生更改,就会导致Make重新编译所有目标文件。这是过度的,并且有更多微妙的方法可以避免所有不必要的工作,但在尝试之前必须先了解这一点。