![](/img/trans.png)
[英]How can I avoid circular dependency in my Makefile compiling obj file with g++ and gcc?
[英]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.