我不确定我在这里做错了什么。我试图弄清楚我的项目有哪些依赖项,不仅是源文件,还有非系统包含的头文件。我有很多来自这个网站的与这个主题相关的资源。
但是,当我这样做时
touch MyHeader.h
作为测试是否可行,我的制作过程无法重建包含此标头的源文件。所以,这就是我的makefile中的内容(相关的)
CPP=g++
CPPFLAGS=-Iadditional/includes -MMD
CXXFLAGS=-std=c++0x -c
# not every source file in this directory needs to be included in this build
# this is because of shared code with Windows
SOURCESFILTER = File1.cpp File2.cpp
OBJ_DIR=obj
SOURCES = $(filter-out $(SOURCEFILTER),$(wildcard *.cpp))
OBJECTS = $(addprefix $(OBJ_DIR)/,$(SOURCES:.cpp=.o))
DEPENDENCIES = $(OBJECTS:.o=.d)
.PHONY: archive
archive : $(OBJECTS)
ar mylib.a obj/*.o
-include $(DEPENDENCIES)
$(OBJ_DIR)/%.o: $(SOURCES) $(DEPENDENCIES)
$(CPP) $(CPPFLAGS) $(CXXFLAGS) $< -o $@
我已经验证上述过程确实生成了预期的 *.d 文件。我假设我正确地包括了它们。但是,如前所述,作为我做的测试:touch MyHeader.h
它与源代码位于同一目录中,然后重新运行 make,包含此标头的源文件都不会被重新制作。我错过了什么?
安迪