首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当mkdir -p不可用时,如何在makefile中创建目录?

当mkdir -p不可用时,如何在makefile中创建目录?
EN

Stack Overflow用户
提问于 2011-03-04 11:58:33
回答 1查看 22.1K关注 0票数 8

我有一个makefile,它执行通常的目录创建:

代码语言:javascript
复制
$(Release_target_OBJDIR)/%.o: %.cpp
     mkdir -p $(dir $@)
     $(COMPILE.cpp) $< $(CFLAGS) $(INCLUDES) -o $@

不幸的是,当我在scratchbox2下运行这个命令时,mkdir -p命令总是默默地失败。

我尝试了以下不起作用的传说:

代码语言:javascript
复制
$(Release_target_OBJDIR)/%.o: %.cpp
    mkdir $(dir $(dir $(dir $@)))
    mkdir $(dir $(dir $@))
    mkdir $(dir $@)
    $(COMPILE.cpp) $< $(CFLAGS) $(INCLUDES) -o $@

这一产出如下:

代码语言:javascript
复制
mkdir -p /home/foo/projects/htc/arm/obj/cbar/release/                  
mkdir -p /home/foo/projects/htc/arm/obj/cbar/release/                  
mkdir -p /home/foo/projects/htc/arm/obj/cbar/release/  

..。尾随斜杠阻止dir函数以我想要的方式剥离最后一个目录。

除了编写脚本或小型C应用程序来复制"-p“功能之外,还有人想在makefile中创建子目录吗?

如果没有-p选项,当makefile试图创建一个已经存在的目录时,mkdir将给出一个错误。我可以执行mkdir blah 2> /dev/null,但这样做可能会丢失其他错误消息。

有没有人想过为什么mkdir -p不能在scratchbox2下工作?

编辑

根据bobbogo的建议,我将其合并在一起。它看起来相当复杂,但似乎有效,即使在scratchbox2下也是如此。

代码语言:javascript
复制
# Generic variables for use in functions
comma:= ,
empty:=
space:= $(empty) $(empty)

# Make directory function
forlooprange = $(wordlist 1,$(words $1),1 2 3 4 5 6 7 8 9 10)
forloop = $(foreach n,$(call forlooprange,$1),$(call $2,$n,$3))
mkdirfunc0 = test -d $1 || mkdir $1;
mkdirfunc1 = $(call mkdirfunc0,/$(subst $(space),/,$(foreach n,$(wordlist 1,$1,$2),$n)))
mkdirfunc2 = $(call forloop,$1,mkdirfunc1,$1)
mkdirmain = $(call mkdirfunc2,$(subst /, ,$1))

.PRECIOUS: %/.sentinel  
%/.sentinel:
    $(call mkdirmain,$*)
    touch $@
EN

回答 1

Stack Overflow用户

发布于 2011-03-04 12:02:32

您可以告诉make忽略任何使用-命令返回的失败代码。

代码语言:javascript
复制
$(Release_target_OBJDIR)/%.o: %.cpp
    -mkdir $(dir $(dir $(dir $@)))
    -mkdir $(dir $(dir $@))
    -mkdir $(dir $@)
    $(COMPILE.cpp) $< $(CFLAGS) $(INCLUDES) -o $@

(请注意,这并不能解决尾随斜杠问题。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5193421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档