是否可以在Makefile的单次传递中使用gcc / g ++ / nvcc自动依赖-M而不保存对文件的依赖?

时间:2016-09-24 14:17:05

标签: c++ gcc makefile g++ nvcc

我试图使用gcc / g ++ / nvcc和Makefile来提出自动依赖的解决方案。

我认为我想出了一个解决方案,在任何编译目标之前在Makefile中调用gcc -M $(SRC FILES),并假设Make现在已经更新了编译目标的规则。

我认为可以使用的Makefile的一个例子如下:

PROG = main.out

SRC = $(wildcard *.cc)
OBJ = $(SRC:.cc=.o)

all: $(PROG) | deps

$(PROG): $(OBJ)
    g++ -o $@ $^

$(OBJ): $(SRC)
    g++ -c $<

.PHONY: deps

deps:
    g++ -M $(SRC)

现在我想知道是否打电话给

    g++ -M $(SRC)

只是将依赖项打印到stdout并且实际上Makefile仍然不是自动依赖项的更明智。

理想情况下,我正在寻找一种解决方案,该解决方案将在Makefile的单个传递中运行并使用gcc / g ++ / nvcc自动依赖性标志,最好是不需要将依赖项保存到一大堆文件的解决方案。

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作来同时获取.o.d个文件:

g++ -c main.cpp -o main.o -MP -MMD -MF main.d

所以在你的Makefile中定义你的依赖文件(例如DEPFILES)并像上面的命令一样生成.d,然后在DEPFILES之后包含-,它告诉GNU Make to包含dep文件(如果存在)。

-include $(DEPFILES)