1

メイクファイルの関連部分を投稿しました。このメイクファイルを実行するmake allと、コンパイル時にコンパイル エラーが発生しdebugosd.oます。ただし、make は以前にビルドされた を検出したためdebugosd.o、そのままビルドを続行しdialup.otzます。

すべての.oを削除せずに、強制debugosd.o的に古いものにするにはどうすればよいですか?makedebugosd.o

.o ファイルを作成するルールは次のとおりです。

%.o: %.c
    $(TITLE)
    $(CC) $(COMPILE) $(C_OPTIONS) -c $<

Makefile のスニペットは次のとおりです。

all: shared0.flw shared1.flw shared2.flw shared3.flw

debugosd.o: debugosd.c debugosd.h
xdialler_interface_new.o: xdialler_interface.h
dialup.ooo: xdialler_interface_new.o debugosd.o xDialler.a
    $(TITLE)
    $(MAKE_OOO)

dialup.otz: dialup.ooo  
    $(BIN)opress $< 

shared1.dir: dialup.otz 
    $(TITLE)
    $(BIN)dirbuild $(SHAREDDIR1_OPTIONS)

shared1.flw: shared1.dir 
    $(TITLE)
    $(BIN)flwbuild $(SHAREDFLW_OPTIONS1)

実際、私は問題が何であるかを理解しました。shared1.flw偽のターゲットを使用して再構築を強制していました。makeこれは、エラーに関係なく継続することを余儀なくされていたと思います。

4

1 に答える 1

1

特定のサブコマンドがリストされていないdebugosd.oため、どこかでデフォルトを使用していると想定しています(など.c.o)。

サブコマンドのいずれかがゼロ以外の終了コードを返した場合、make は終了する必要があります-dubugosd.oターゲットに使用されている実際のコマンドを確認してください。

以前にビルドされたファイルがあるかどうかは問題でmakeはなく、エラー状態の後に続行するべきではありません。

于 2010-01-28T14:24:31.097 に答える