1.インクルードファイルには
場合はmake
、読み取りinclude
キーときには、電流を読み取るために一時停止しますMakefile
が、読み取ることがinclude
含まれているファイルを、その後の終了後、現在の読書を読んでMakefile
ファイル。
include
使用される具体的な方法は次のとおりです。
include <filenames>
filenames
されたshell
ファイル名でサポートされている(あなたが示されたワイルドカードのファイルを使用することができます)。
注:
include
キーワードに1つ以上のスペースが含まれている可能性がある行の先頭(読み取り時のスペースは自動的に無視されます)が、Tab
開始に使用することはできません。それ以外の場合はinclude
、処理するコマンドを入力したと見なされます。
複数のファイルを区切るにはスペースを使用します。ファイルinclude
にそれを含めるを使用しMakefile
ます。変数または関数への参照がある場合、それらはMakefile
デプロイメントに含まれます。
include
通常、次の場合に使用されます。
- プロジェクトファイルでは、それぞれに
Makefile
再構築ルールを記述するための個別のモジュールがあります。共通の変数定義またはパターンルールのセットを定義する必要があります。一般的な方法は、これらの変数またはルールで一般的に使用される定義をファイルでモデル化し、必要に応じてinclude
このファイルを含めることです。 - ソースファイルに基づいて依存関係ファイルが自動的に生成される場合、自動生成された依存関係を別のファイルに保存できます。次に
Makefile
、このファイルを含めます。
注:
include
ファイルを含む時間を使用する場合は、ファイルの絶対パスがファイルではないか、現在のファイルの下にファイルされないようmake
に指定します。ファイル名の次のパスで検索されます。
- まず、
make
コマンドオプションを追加できる場合、-I
または--include-dir
後で指定したパスを追加できる場合に実行します。ファイルが存在する場合は、そのパスが使用されます。 - ファイルが存在しない場合、それはいくつかの他のパスに検索します。
usr/local/include
そしてusr/include
、
上記でinclude
指定したファイルにパスが見つからない場合はmake
、警告プロンプトファイルが見つからないというプロンプトが表示されますが、終了しませんが、引き続きMakefile
コンテンツを追跡します。
Makefile
投稿全体を読み終えると、指定make
されinclude
たファイルによって作成されたルールを使用しようとしますが、存在しません。作成できない場合は、ファイルを保存して終了します。
使用する場合、通常-include
、include
エラーを置き換えてファイルを無視するには、次の形式を使用して、ファイルが存在しないか、作成できません。
-include <filename>
そして、include
同じ方法の使用。
これら2つの方法の違い:
include <filenames>
、make
プログラムを処理する場合、ファイルリスト内のファイルが存在しないか、このファイルを作成するルールがない場合make
、プログラムはエラーを保存して終了します。-include <filenames>
、含まれているファイルが存在しない場合、またはファイルを作成するルールがない場合、make
プログラムは実行を継続し、再構築の最終目標を完了できない場合にのみ、プログラムは保存して終了するエラーを表示します。
2.使用例
ディレクトリ構造は次のとおりです。
wohu@ubuntu:~/cpp/func$ ls
common_variable demo.cpp demo.h Makefile
common_variable
内容は以下の通りです。
a = 11
b = 22
c = 33
Makefile
内容は以下の通りです。
include common_variable
all:
echo $(a) $(b) $(c)
makeを実行した後
wohu@ubuntu:~/cpp/func$ make
echo 11 22 33
11 22 33
wohu@ubuntu:~/cpp/func$
3. MAKECMDGOALS
make
実行中に、MAKECMDGOALS
コマンドラインパラメータで指定された最終目標のリストを記録する特別な変数が設定されます。パラメータで最終目標が指定されていない場合、この変数は空になります。
ifeq ($(MAKECMDGOALS), aa cc)
obj = aa cc
else ifeq ($(MAKECMDGOALS), bb)
obj = bb
else
obj = other
endif
aa:
@echo $(obj)
bb:
@echo $(obj)
cc:
@echo $(obj)
other:
@echo $(obj)
実行make
結果
wohu@ubuntu:~/cpp/func$ make aa cc
aa cc
aa cc
wohu@ubuntu:~/cpp/func$ make aa
other
wohu@ubuntu:~/cpp/func$ make bb
bb
wohu@ubuntu:~/cpp/func$ make cc
other
wohu@ubuntu:~/cpp/func$