【发布时间】:2016-11-24 21:59:22
【问题描述】:
(抱歉英语不好,我是德国人)
各位程序员,
我正在为我的 C++ 项目使用 GNU make,但我在自动依赖方面遇到了一些问题: 如果我执行“make objects/file.o”,它会告诉我 objects/file.o 已经是最新的,即使 source/file.cpp 包含的文件已更改。 奇怪的是,如果我将 DEP_DIR 和 OBJ_DIR 更改为“。”一切正常。 这是我的makefile(不完整):
SRC_DIR := source
DEP_DIR := dependencies
OBJ_DIR := objects
$(shell mkdir -p $(dir EXE_PATH))
-include $(addprefix $(DEP_DIR)/, $(NAMES:=.d))
$(OBJ_DIR)/%.o : $(SRC_DIR)/%.cpp
$(CXX) -c $(CFLAGS) $(SRC_DIR)/$*.cpp -o $@
$(CXX) -MM $(CFLAGS) $^ > $(DEP_DIR)/$*.d
$(EXE_PATH) : $(addprefix $(OBJ_DIR)/, $(NAMES:=.o))
$(CXX) $(LINK_FLAGS) $^ -o $(EXE_PATH)
all : $(EXE_PATH)
run :
$(EXE_PATH)
carun : $(EXE_PATH)
$(EXE_PATH)
clean:
rm -f EXE_PATH
如果有人能向我解释这个奇怪的问题,我将不胜感激。
【问题讨论】:
-
应该是
CXX,而不是CPP。CPP是 C 预处理器,CXX是 C++ 编译器 -
否则,我建议您使用github.com/igagis/prorab/blob/master/wiki/…,它会为您完成所有这些自动依赖,您不必担心。
标签: makefile dependencies gnu-make