Makefileファイルの作成


Cソースファイルがたくさんあるときは、実行するたびにコンパイルしたり、リンクしたりします.実行するには、この一歩一歩の操作が時間と労力がかかります.より良い方法でサービスしてくれませんか.antはjavaアプリケーションを構築するために使用できることを知っています.汎用的にはmakeもCサービスを提供しています.
buildに似ています.xmlは、makeで読み込まれた唯一のプロファイルがMakefileであり、Makefileの作成手順について説明します.まず、具体的なMakefileファイルがどのように構築されているかを見てみましょう.
ディレクトリの下に2つのファイルがあります.
/home/l/g/tomotoboy/c >ls
factorial.c        main.c

Makefileファイル:
/home/l/g/tomotoboy/c >cat Makefile
main: main.o factorial.o
        gcc -o main main.o factorial.o
main.o: main.c
        gcc -c main.c
factorial.o: factorial.c
        gcc -c factorial.c

makeを使用して構築:
/home/l/g/tomotoboy/c >make main
gcc -c main.c
gcc -c factorial.c
gcc -o main main.o factorial.o

ディレクトリの下にあるファイルの変更を再度確認します.
/home/l/g/tomotoboy/c >ls
Makefile     factorial.c  factorial.o  main         main.c       main.o

mainプログラムを実行します.
/home/l/g/tomotoboy/c >main 9
Factorial of 9 is 362880.

次に、Makefileファイルについて詳しく説明します.通常、Makefileには次のような内容が含まれています.
  • makeツールによって作成されるターゲットボディ(target)が必要です.通常はターゲットファイルまたは実行可能ファイルです.
  • 各ターゲットを作成する際に依存するファイル(dependency_file).
  • 各ターゲットを作成する際に実行するコマンド(command).
  • フォーマットは次のとおりです.
    target: dependency_files
    TAB command

    1行目は依存関係を表す.2行目はコマンドで、注意ルール2行目のTABはそこがTABキーであることを示します.
    たとえば、上のMakefileファイルの最初の行:
    main: main.o factorial.o
    は、ターゲットmainの依存ファイルがmainであることを示す.o、factorial.o.
    依存するオブジェクトがターゲット修正後に修正されると、ルールの行で指定するコマンドを実行する.私たちの上のMakefileの2行目のように実行します.
    gcc -o main main.o factorial.o

    同様に、上記のMakefileの3行から6行を説明することができます.
    上のMakefileファイルがあれば、makeできます.使用するフォーマットは次のとおりです.
    make target

    これによりmakeはMakefileファイル(小文字makefile)を読み込んで対応するcommand文を実行し、すべての依存ファイルを見つけ、見つからないとエラーを報告し、依存ファイルを補完する必要があります.