我有以下一段makefile:
CXXFLAGS = -std=c++0x -Wall
SRCS = test1.cpp test2.cpp
OBJDIR = object
OBJS = $(SRCS:%.cpp=$(OBJDIR)/%.o)
all: test1
release: clean test1
test1: $(OBJS)
$(CXX) -o $@ $(OBJS)
$(OBJDIR)/%.o: %.cpp
$(CXX) $(CXXFLAGS) -MD -c -o $@ $<
-include $(SRCS:.cpp=.d)
clean:
rm -rf $(OBJDIR)/*
.PHONY: all clean release
现在,如果我尝试调用“make -j4 release”,clean 目标通常会在构建文件的中间执行,这会导致编译失败。我的问题是如何确保在开始发布构建之前已完成清理目标。
最佳答案
我的偏好是
release:
$(MAKE) clean
$(MAKE) test1
这迫使两个目标被连续制作,而不会干扰它们的内部平行性(如果有的话)。
关于makefile - 并行生成文件需要依赖项排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496135/