0

メイクファイル内にコマンドのシーケンスが次のようなメイクファイルを作成しました

    .PHONY: all clean distclean run
    run : $(program_NAME)
    ./$(program_NAME) > output.txt  #runs my program and stotre output in output.txt

    all: $(program_NAME)

    $(program_NAME): $(program_OBJS)
    $(LINK.cc) $(program_OBJS) -o $(program_NAME)

これのシーケンスを1つ以下に変更すると、うまくいきません:-

   .PHONY: all clean distclean run
   $(program_NAME): $(program_OBJS)
   $(LINK.cc) $(program_OBJS) -o $(program_NAME)

   all: $(program_NAME)

    run : $(program_NAME)
    ./$(program_NAME) > output.txt  #runs my program and stotre output in output.txt

これdoesnot generate any output.txtは私にとって。私が感じているrun :のは $(program_NAME) に依存しているため、makefile の$(program_NAME): $(program_OBJS) $(LINK.cc) $(program_OBJS) -o $(program_NAME)s前に来る必要があります。run :しかし、それはうまく機能しています。誰かがここに光を投げてくれませんか? (ありがとう)

4

1 に答える 1

1

まず、makefile のインデント規則を守る必要があります。ルールによって実行されるコマンドは、タブ文字で開始する必要があります。次に、makefile に表示される最初のルールは、 と入力すると自動的に実行されることを考慮してくださいmake。最初のケースでは、プログラムが実行されます。ルールが最初のものではない2 番目のメイクファイルで同じものを取得するには、runを実行する必要がありますmake run

于 2012-04-18T20:14:46.393 に答える