1

プロジェクトのメイクファイルを作成しました。次のようになります。

CC = g++
LDFLAGS = -lpthread
CFLAGS = -Wall -pedantic -Wno-long-long -O0 -ggdb
SOURCES = main.o List.o ProcessCommands.o HandleTransfers.o

all:    $(SOURCES)

%.o: %.cpp
    $(CC) $< -o $@ -c $(CFLAGS) $(LDFLAGS)

compile:
    $(CC) $(SOURCES) -o executable/ftp $(LDFLAGS)

run:
    ./executable/ftp

clean:
    rm -rf *o ftp 

doc:
    doxygen ftpDocConf

主な問題は、ソース ファイルの 1 つに含まれているヘッダー ファイルを変更すると、"make all" コマンドが変更を認識せず、"make: Nothing to be done for `all'." を返すことです。私はインターネットを検索しましたが、まだ機能させることができませんでした。また、メイクファイルには別の「問題」があります。このmakefileが使用されるプロジェクトはftpサーバーであり、「make run」と入力して実行可能ファイルを実行すると、サーバーで何かを行い、プログラムを終了すると、makefileは「make:* [run] Interrupt」を返します。このメッセージが表示されないようにする方法はありますか? ctrl+c を使用してプログラムを終了したために表示されると思いますが、別の方法で「エラー」が発生しないようにする方法はありますか?

ご回答ありがとうございます。

4

2 に答える 2

1

MadScientist は、ヘッダーに関する問題をよく説明しています。これらの安価で汚い修正を追加できます。

# header files added as dependencies of .o files below
%.o: %.cpp header1.h header2.h header3.h
    $(CC) $< -o $@ -c $(CFLAGS) $(LDFLAGS)

問題を回避するにmake runは、実行ターゲットを xterm で実行するように変更できます。この方法では、xterm は make ではなくシグナルをキャッチします。

run:
    xterm -e ./executable/ftp
于 2013-06-03T14:48:44.473 に答える