0

私はメイクファイルを理解しようとしています。次のファイルがあります。

main.c
(includes progA.c progB.c progC.c)

progA.c
(includes progA.h)

progB.c
(includes progA.c)

progC.c

メイクファイルを作成しようとしましたが、それが正しいかどうかわかりません:

main.o: main.c progA.o progB.o progC.o
    gcc -c main.c

progA.o: progA.c progB.o
    gcc -c progA.c

progB.o: progB.c progB.h
    gcc -c progB.c

progC.o: progC.c 
    gcc -c progC.c

誰かが私を理解するのを手伝ってくれませんか。チュートリアルを見ようとしましたが、別の情報が提供されています。

また、実際にこれを実行してテストするにはどうすればよいですか?

4

2 に答える 2

1

あなたの問題については、次のメイクファイルが仕事をするはずです。入力するだけでメイクファイルを実行できます。makeまたはmake -f <name_of_makefile>、メイクファイルにカスタム名がある場合 (例: build_main)

all: main

main: main.o progA.o progB.o progC.o
    gcc -o main main.o progA.o progB.o progC.o

main.o: main.c     
    gcc -c main.c   

progA.o: progA.c
    gcc -c progA.c

progB.o: progB.c
    gcc -c progB.c

progC.o: procC.c
    gcc -c progC.c

実行可能ファイルをビルドするには、 の後の行で指定されているオブジェクトmain.o progA.o progB.o progC.oが必要main:です。

コンパイルのルールはmain.o progA.o progB.oprogC.o次の 4 つのセクションで指定されます。

メイクファイルの一般的な形式は次のとおりです。

target: dependencies
[tab] system command
于 2013-10-26T13:16:16.557 に答える
0

これは奇妙に見えます:

progA.o: progA.c progB.o
  gcc -c progA.c

通常、makefile-「行」には 3 つのコンポーネントがあります。

  • target: これは、コマンド ラインの実行結果である必要があります。1 つのターゲットは特別なターゲット、つまり最初のターゲットです。通常、これは「すべて」と呼ばれ、メイン ターゲット (実行可能ファイルなど) に依存します。
  • 依存関係: これは、コマンド ラインでターゲットを作成するために使用されるすべてのファイルであり、ソース ファイルのように明示的であり、 #include ファイルのように暗黙的である
  • コマンドライン: 依存ファイルからターゲットを作成するコマンド
于 2013-10-26T13:09:13.123 に答える