Make 和 GCC 是非常好的依赖检查组合。
例如,GCC 可以自动生成“make”依赖文件(-MD 命令行开关),以便能够重建所有依赖于给定头文件的源文件。
我有一些简单的规则可以剪切并粘贴到我的 makefile 中:
# compile c files
%.o: %.c
${CC} ${CFLAGS} -c $< -MD -MF $(<:%.c=%.dep) -o $@
# compile c++ files
%.opp: %.cpp
${CPP} ${CPPFLAGS} -c $< -MD -MF $(<:%.cpp=%.dep) -o $@
现在,如果您的目标文件在 OBJ_C 和 OBJ_CPP 列表中声明:
.PHONY: cleandep
cleandep:
rm -f $(OBJ_C:%.o=%.dep) $(OBJ_CPP:%.opp=%.dep)
-include $(OBJ_C:%.o=%.dep) $(OBJ_CPP:%.opp=%.dep)
Make 当然可以跟踪与其他项目的依赖关系等,例如,也可以根据需要重建共享库。
例如,如果您的其他团队总是将他们最新的 DLL 放在某个共享文件夹中:
myapp: ${SRC_CPP} ${LIB_DIR}other_team.lib
...
${LIB_DIR}other_team.lib: /shared_folder/latest/other_team.lib
cp /shared_folder/latest/other_team.lib ${LIB_DIR}other_team.lib