9

balsamiqモックアップファイルをpngファイルに自動的にエクスポートするようにnmakemakefileを設定しようとしていますが、すべてのファイルを明示的にリストしないと、そのための一般的なルールを作成する方法の先頭と末尾を作成できません。エクスポートしたい。

このページでは、ファイルをエクスポートするためのコマンドライン構文について詳しく説明します。このページには、.objファイルから.exeファイルへの一般的なルールが含まれているように見える例が含まれています。

これまでに試したmakefileは次のようになります。

.bmml.png:
    "C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $< $@

しかし、これは機能しません。

nmakeを(いくつかの古いpngファイルで)実行するだけの場合、nmakeはこれを実行します。

[C:\Temp] :nmake

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.


[C:\Temp] :

1つの特定のファイルをビルドするように依頼すると、次のようになります。

[C:\Temp] :nmake "TestFile.png"

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

NMAKE : fatal error U1073: don't know how to make '"TestFile.png"'
Stop.

[C:\Temp] :

私をまっすぐにすることができるnmakeの達人はいますか?

実験のために、.txtファイルをコピーして.datファイルを作成するmakefileの例は、次のようになります。

.txt.dat:
    copy $< $@

これも何もしないので、明らかに私はそのような一般的なルールがどのように機能するかを理解していません。どういうわけか私が欲しいファイルをリストする上記の目標を指定する必要がありますか?

4

2 に答える 2

18

NMAKE パターン ルールは、GNU make の古い学校のサフィックス ルールによく似ています。あなたの場合、最初はほぼ正しかったのですが、.SUFFIXES 宣言がありませんでした。例えば:

.SUFFIXES: .bmml .png
.bmml.png:
    @echo Building $@ from $<

ただし、これはソリューションの一部にすぎないと思います。変換するすべてのファイルを明示的にリストすることを避けたいとも述べたからです。残念ながら、依存関係リストでワイルドカードを展開するだけであり、依存関係リストで本当に必要なのは、既に存在するファイルのリスト (*.bmmlファイル)、それらのファイル (*.png ファイル) から作成されるファイルのリスト。それにもかかわらず、次のような再帰的な NMAKE 呼び出しで目標を達成できると思います。

all: *.bmml
    $(MAKE) $(**:.bmml=.png)

ここで、NMAKE はディレクトリ内の .bmml ファイルのリストに*.bmmlprereq リストを展開しall、新しい NMAKE インスタンスを開始し、ビルドするゴールをそのファイルのリストとして指定し、 のすべてのインスタンスを に.bmml置き換えます.png。したがって、すべてをまとめると、次のようになります。

.SUFFIXES: .bmml .png
all: *.bmml
    @echo Converting $(**) to .png...
    @$(MAKE) $(**:.bmml=.png)

.bmml.png:
    @echo Building $@ from $<

ファイル Test1.bmml および Test2.bmml を作成してからこの makefile を実行すると、次の出力が得られます。

Converting Test1.bmml Test2.bmml to .png...
Building Test1.png from Test1.bmml
Building Test2.png from Test2.bmml

もちろん、これらの .bmml ファイルが非常に多い場合は、コマンド ラインの長さの制限に違反する可能性があるため、注意してください。その場合は、ソース ファイルを明示的にリストするか、GNU make (さまざまな形式で Windows で利用可能) などのより機能的な make ツールを使用することをお勧めします。

于 2009-03-12T23:28:41.067 に答える
0

これはうまくいきますか?これを MAKEFILE に入れます。

export : *.bmml
    "C:\Program Files\Balsamiq Mockups\Balsamiq Mockups.exe" export $** $(**B).png

次に実行します。

nmake /A

私は Balsamiq を持っていないので、これをテストすることはできませんが、私の場合、次の MAKEFILE がある場合:

export : *.txt
    copy $** $(**B).dat

myFile.txt のあるフォルダーで実行するnmake /Aと、myFile.dat が作成されます。

于 2009-03-10T18:45:15.083 に答える