makefileのクイックスタート

3752 ワード

makefileとは何ですか?1つのプロジェクトのソースファイルは数え切れないほどあり、タイプ、機能、モジュール別にいくつかのディレクトリに配置されています.makefileは、makefileがShellスクリプトのようにオペレーティングシステムのコマンドを実行できるため、どのファイルが先にコンパイルされる必要があるか、どのファイルが後にコンパイルされる必要があるか、どのファイルが再コンパイルされる必要があるか、さらに複雑な機能操作を実行する必要があるかを指定する一連のルールを定義しています.次に、簡単なmakefileの使用例1をいくつかの簡単な例で紹介します.
main: main.c
     gcc main.c -o main

ここで、mainはターゲット生成ファイル、mainである.cは依存ファイルの例2である.
main: main.c hello.o
     gcc main.c hello.o -o main
hello.o: hello.c
     gcc -c hello.c
   
clean :
     rm -fr *.o main

このうち、gcc min.c:gccコンパイラはソースファイルmin.cを前処理、コンパイル、およびリンクし、最後に実行可能ファイルを生成する、デフォルトはa.out gcc -c min.c:gccコンパイラはソースファイルmin.cを前処理し、コンパイルし、リンクを行わず、最後に生成するのはobject file(ターゲットファイル)であり、ここではmin.oであり、これはコンパイルプロセスの中間段階に属し、リンクを経てこそ、最終的に実行可能ファイルを生成することができる.注意:makefileは、ターゲットファイルmainがmainに依存するなど、依存条件を上から見下ろす.cとhello.そしてハローo依存hello.c,gcc-c helloを実行する.c後helloを生成する.o. 例3:


CC = gcc
CFLAGS = -c -Wall -g
OBJS = main.c hello.o helloo.o
all: main
main: $(OBJS)
     $(CC)  $^ -o $@
%.o: %.c
     $(CC) $^  $(CFLAGS) -o $@ 
clean :
     rm -fr *.o main

説明:make cleanコマンドを実行し、現在のディレクトリのすべてを削除します.oファイルおよびmain CC、CFLAGS、OBJSは、後続の変数値allの代わりに変数名を定義することに相当し、すべてのターゲットファイルが実行可能であることを示す
all : hello another
 
hello : hello.c
    gcc -o $@ $<
 
another : another.c
    gcc -o $@ $<

$^=前の文の依存関係で依存されたファイル$@=ターゲット名%=ワイルドカード(同じ名前を表す)
さあ、今日の分かち合いはここまでです.見てくれてありがとう.