0

私は動作しているメーカーを持っています、私はプラットフォームコードを持っています、そしてフォルダ内の各OSのためのいくつかのメーカーのように。現在、動作するmakefileが1つあります。名前をMakefile.wsに変更し、これをMakefileに書き込みました

all:
    make -f Makefile.w32

clean:
    make -f Makefile.w32 clean

私はそれを実行し、このエラーが発生しました

> "make" 
make -f Makefile.w32
make[1]: Entering directory `/c/nightly/test'
make -f Makefile.w32
make[3]: Makefile.w32: No such file or directory
make[3]: *** No rule to make target `Makefile.w32'.  Stop.
make[2]: *** [all] Error 2
make[1]: *** [build] Error 2
make[1]: Leaving directory `/c/nightly/test'
"make": *** [all] Error 2

奇妙なことに、クリーンは完全に機能します。次に、「make -f Makefile.w32 mingw32」と書くことにしましたが、正しく機能しませんでした。実際、それはmingw32というフォルダを作成しましたが、これは非常に奇妙だと思いました。

mingw32ルールについては、ビルドに使用されるメイン/通常のルールであると思われるビルドをコピーするだけです。

$(BUILD):
    @[ -d $@ ] || mkdir -p $@
    @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

mingw32:
    @[ -d $@ ] || mkdir -p $@
    @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

完全な.w32ソースはここにあります http://pastie.org/320035

4

4 に答える 4

1

まず、あなたが走っているメーカーは何ですか?Cygwin か MinGW か、それとも何か?

make -f Makefile.w32
make[1]: Entering directory `/c/nightly/test'
make -f Makefile.w32 
make[3]: Makefile.w32: No such file or directory

「ディレクトリに入る」がヒントです。/c/nightly/test に入るのはなぜですか? そこに Makefile.w32 はありますか?

ディレクトリ「mingw32」の作成に関しては、ルール

mingw32:
        @[ -d $@ ] || mkdir -p $@
        ...

まさにそれを行います。「mingw32」が存在しない場合は作成します。

より短い例があり、何を達成したいのか、何が起こると予想されるのかを明確に説明すると、助けやすくなります.

于 2008-11-20T22:18:40.553 に答える
0

を使用してセカンダリメイクファイルを呼び出してみましたか

$(MAKE) -f ...

それ以外の

make -f ...?

于 2008-11-20T22:18:01.320 に答える
0

2番目の例で問題が見られると思います。$(BUILD) 変数が含まれないように mingw32 行を変更する必要があります。

mingw32:
    @[ -d $@ ] || mkdir -p $@
    @make --no-print-directory -C mingw32 -f $(CURDIR)/Makefile
于 2008-11-20T22:22:45.680 に答える
0
  1. 彼がディレクトリを作成したことは明らかです。これは、指定された 2 つのルールの最初のコマンドであり、オブジェクト名、つまり build または mingw32 のいずれかを含む mkdir が含まれています。
  2. その後、現在のディレクトリ (つまり、cd がまったくない) に移動し、Makefile を実行します。しかし、あなたが書いたように、Makefile の名前を Makefile.ws に変更したため、もちろん File-Not-Found-error が発生しています。

質問から、簡単な紹介またはmakeのマニュアルを見ることをお勧めします。

于 2008-11-20T22:24:16.517 に答える