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

Is it possible to use gcc/g++/nvcc automatic dependency -M in a single pass of a Makefile without saving dependencies to a file?

本文关键字:依赖 有可能 存到文件 nvcc 单次传 g++ 是否 gcc Makefile      更新时间:2023-10-16

我试图想出一个使用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)

只是导致依赖项被打印到标准输出,实际上Makefile仍然不知道自动依赖项。

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

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

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

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

-include $(DEPFILES)
相关文章: