2009-03-16 5 views
4

にディレクトリを作成します。 'どのように私はVisual Studio 2005のNMAKEを使用している、と私はこのようなテストメイクファイルを持っているメイクファイル

sometarget: 
    -mkdir c:\testdir 

私はいつもディレクトリを作成する、指定しなくても、 sometarget 'です。

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

をしかし、それは、私が実際には「-mkdir C:\ TESTDIR」をやりたいの2行を、必要があります。例えば、私はこれを行うことができます。私が単に "-mkdir c:¥testdir"と置き換えた場合、nmakeからエラーが発生します - "致命的なエラーU1034:構文エラー:区切り文字がありません"。

どのように私はいつもmkdirを実行できますか?

答えて

7

ターゲットは常に目標に基づいて行動します。これは一般的なスクリプトツールではありません。ターゲットを見て、存在するかどうかを確認します。ターゲットが存在しない場合は、そのターゲットのコマンドを実行します。

これを行う通常の方法は、makeスクリプトによって決して生成されないダミーターゲットを持つことです。したがって、makeを実行するたびに、関連するコマンドを実行する必要があります。

または、コマンドをバッチファイルに追加してから、makeファイルを呼び出すことができます。

9

私はこれがうまくいくと思う:

[email protected] if NOT EXIST "dir" mkdir "dir" 
+0

最後に誰かがあまり話していないことを示しました! – holms

+0

これは私のためにWindows 7上で動作しました。 – bdforbes

-2

は、この使用してみてください:

-mkdir -p c:\testdir 
3

を私はNMAKEを使用してWindowsの等価があるかどうかわからないんだけど、I 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には同等の機能があります。

+0

ありがとう!これは私が必要としていたものでした –

関連する問題