如何在 makefile 中创建目录

发布于 2024-07-15 02:38:32 字数 422 浏览 11 评论 0原文

我正在使用 Visual Studio 2005 nmake,并且我有一个如下所示的测试 makefile:

sometarget:
    -mkdir c:\testdir

我希望始终创建目录,而不必指定“sometarget”。 例如,我可以这样做:

!if [if not exist c:\testdir\$(null) mkdir c:\testdir]
!endif

但这需要两行,我实际上只想执行“-mkdir c:\testdir”。 如果我只是将其替换为“-mkdir c:\testdir”,我会从 nmake 收到错误 - “致命错误 U1034:语法错误:分隔符丢失”。

我怎样才能始终执行 mkdir,而不用搞乱 !if [] 东西​​?

I'm using Visual Studio 2005 nmake, and I have a test makefile like this:

sometarget:
    -mkdir c:\testdir

I want to always create the directory, without having to specify 'sometarget'. For example, I can do this:

!if [if not exist c:\testdir\$(null) mkdir c:\testdir]
!endif

But that requires two lines, where I really only want to do the "-mkdir c:\testdir". If I just replace it with "-mkdir c:\testdir" I get an error from nmake - "fatal error U1034: syntax error : separator missing".

How can I always execute the mkdir, without messing about with !if [] stuff?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

幻想少年梦 2024-07-22 02:38:32

我认为这会起作用:

 -@ if NOT EXIST "dir" mkdir "dir"

I think this will work:

 -@ if NOT EXIST "dir" mkdir "dir"
oО清风挽发oО 2024-07-22 02:38:32

Make总是想根据目标做事。 它不是一个通用的脚本工具。 它查看目标并检查它们是否存在。 如果目标不存在,它将执行该目标的命令。

通常的方法是使用 make 脚本永远不会生成的虚拟目标,因此每次 make 运行时都必须执行相关命令。

或者,您可以将该命令添加到批处理文件中,然后该文件调用您的 make 文件。

Make always wants to do things based on targets. It's not a general scripting tool. It looks at the targets and checks to see if they exist. If the target does not exist it executes the commands for that target.

The usual way to do this is to have a dummy target that is never going to be generated by the make scripts, so every time make runs it has to execute the relevant commands.

Or, you could add the command to a batch file that then calls your make file.

呢古 2024-07-22 02:38:32

我不确定 Windows 中是否有与 nmake 等效的工具,但我设法在 Linux 上不使用目标的情况下创建了一个目录。 我使用了 make 函数“shell”。 例如:

# Find where we are
TOPDIR := $(shell pwd)
# Define destination directory
ROOTFS := $(TOPDIR)/rootfs
# Make sure destination directory exists before invoking any tags
$(shell [ -d "$(ROOTFS)" ] || mkdir -p $(ROOTFS))

all:
    @if [ -d "$(ROOTFS)" ]; then echo "Cool!"; else echo "Darn!"; fi

我希望 Windows 有类似的功能。

I'm not sure if there is an equivalent in Windows with nmake, but I managed to create a directory without using targets on Linux. I used the make function "shell". For example:

# Find where we are
TOPDIR := $(shell pwd)
# Define destination directory
ROOTFS := $(TOPDIR)/rootfs
# Make sure destination directory exists before invoking any tags
$(shell [ -d "$(ROOTFS)" ] || mkdir -p $(ROOTFS))

all:
    @if [ -d "$(ROOTFS)" ]; then echo "Cool!"; else echo "Darn!"; fi

I hope Windows has the equivalent.

温馨耳语 2024-07-22 02:38:32

<代码>$(目录名):
@[ -d $@ ] || mkdir -p $@

$(DIRNAME):
@[ -d $@ ] || mkdir -p $@

口干舌燥 2024-07-22 02:38:32

尝试使用这个:

-mkdir -p c:\testdir

Try using this:

-mkdir -p c:\testdir
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文