在gcc中生成目标文件时创建目录 [英] Create directories when generating object files in gcc

查看:901
本文介绍了在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 generates def.o file in a directory abc; only when there exists a directory abc.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆