在gcc中生成目标文件时创建目录 [英] Create directories when generating object files in gcc
问题描述
gcc -o abc / def.o def.c
生成 def.o
目录中的文件 ABC
;只有当存在 abc
目录时。 有没有办法让gcc在生成的目标文件的封闭目录不存在时创建一个目录?如果不是,自动提前创建目录最简单的方法是什么,特别是对于Makefile?
From 这篇文章,似乎没有办法从 gcc
创建一个目录。
对于makefile,我可以使用这段代码片段。
OBJDIR = obj
MODULES:= src src2
...
OBJDIRS:= $(patsubst%,$(OBJDIR)/%,$(MODULES))
build:$(OBJDIRS)
echo $ ^
$ b $(OBJDIRS):
mkdir -p $ @
make build
会创建目录,并回显结果。
我们也可以在不调用
make build
的情况下自动创建目标文件。PROG:= hellomake
LD:= gcc
...
$(PROG ):$(OBJDIRS)obj / src / hellofunc.o obj / src / hellomake.o
$(LD)$(filter%.o,$ ^)-o $(PROG)
gcc -o abc/def.o def.c
generatesdef.o
file in a directoryabc
; only when there exists a directoryabc
.Is there a way to make gcc to create a directory when the enclosing directory of the generated object file does not exist? If not, what could be the easiest way to make the directory in advance automatically, especially for Makefile?
解决方案From this post, it seems like that there is no way to create a directory from
gcc
.For makefile, I can use this code snippet.
OBJDIR = obj MODULES := src src2 ... OBJDIRS := $(patsubst %, $(OBJDIR)/%, $(MODULES)) build: $(OBJDIRS) echo $^ $(OBJDIRS): mkdir -p $@
make build
will create directories, and echo the results.We also can make the object files are created automatically without invoking the
make build
.PROG := hellomake LD := gcc ... $(PROG): $(OBJDIRS) obj/src/hellofunc.o obj/src/hellomake.o $(LD) $(filter %.o, $^) -o $(PROG)
这篇关于在gcc中生成目标文件时创建目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!