makefile - 并行生成文件需要依赖项排序

标签 makefile gnu-make

我有以下一段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/

相关文章:

regex - 生成文件上的 Sed

makefile - 这个 Makefile 语句中的两个百分号 % 符号是什么意思?

c - 搜索创建通用 makefile 以编译多个程序的解决方案

c++ - patsubst 不能在 GNU make 中工作?

ubuntu - cd .. 在 Makefile 中没有 ONESHELL 的情况下工作

docker - uvicorn 上的 FastApi 运行良好,但无法与 Docker 和 docker-compose 配合使用

makefile - 如何以与 make 和 dmake 配合使用的方式替换 makefile 中的文本?

makefile - 如何在 GNU make 中更改具有多个扩展名的列表中每个文件的扩展名?

makefile - 仅在成功时保留中间文件

c - 创建可执行文件时出现 undefined reference 问题