繁体   English   中英

是否可以在一次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?

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

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

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

因此,请在Makefile中定义依赖文件(例如DEPFILES ),并像上面的命令一样生成.d ,然后通过-包含DEPFILES ,这将告诉GNU Make包含dep文件(如果存在)。

-include $(DEPFILES)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM