我试图使用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自动依赖性标志,最好是不需要将依赖项保存到一大堆文件的解决方案。
答案 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)